/[MITgcm]/MITgcm/model/src/write_grid.F
ViewVC logotype

Diff of /MITgcm/model/src/write_grid.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.15 by edhill, Sat Sep 10 18:30:06 2005 UTC revision 1.23 by jmc, Sun Jun 1 03:48:32 2008 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3          
4  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6          
7  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8  CBOP  CBOP
9  C     !ROUTINE: WRITE_GRID  C     !ROUTINE: WRITE_GRID
10  C     !INTERFACE:  C     !INTERFACE:
11        SUBROUTINE WRITE_GRID(        SUBROUTINE WRITE_GRID(
12       I     myThid )       I                 myThid )
13    
14  C     !DESCRIPTION:  C     !DESCRIPTION:
15  C     Writes the model geometry and grid arrays to file(s) using which  C     Writes the model geometry and grid arrays to file(s) using which
# Line 36  C     myThid -  Number of this instances Line 36  C     myThid -  Number of this instances
36        INTEGER myThid        INTEGER myThid
37    
38  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
39        character*(4) bfname  C     tmpfld :: Temporary array used to compute & write Total Depth ;
40  C     tmpfld  - Temporary array used to compute & write Total Depth  C               loaded in multi-threaded way but written by single (master)
41  C               has to be in common for multi threading  C               thread => needs to be in common to be shared by all threads
42  C     ?aja: not sure why the COMMON block is necessary - should ask JMC?        COMMON / LOCAL_WRITE_GRID / tmpfld
 c     COMMON / LOCAL_INI_MASKS_ETC / tmpfld  
43        _RS tmpfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS tmpfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44        INTEGER i,j,bi,bj        INTEGER i,j,bi,bj
45          LOGICAL writegrid_mdsio
46    #ifdef ALLOW_MDSIO
47          INTEGER k
48          _RS tmpVar(Nr+1)
49    #endif
50    #ifdef ALLOW_MNC
51          CHARACTER*(4) bfname
52    #endif
53  CEOP  CEOP
54    
55  C     Calculate the fluid thickness in R coordinates as seen by the  C     Calculate the fluid thickness in R coordinates as seen by the
56  C     model.  This may differ from what the user specified due to  C     model.  This may differ from what the user specified due to
57  C     partial cells, etc.  C     partial cells, etc.
58        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
59          DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
60            DO j=1-Oly,sNy+Oly           DO j=1-Oly,sNy+Oly
61              DO i=1-Olx,sNx+Olx            DO i=1-Olx,sNx+Olx
62  C             Total fluid column thickness (r_unit) :  C     Total fluid column thickness (r_unit) :
63                tmpfld(i,j,bi,bj) = Ro_surf(i,j,bi,bj) - R_low(i,j,bi,bj)              tmpfld(i,j,bi,bj) = Ro_surf(i,j,bi,bj) - R_low(i,j,bi,bj)
             ENDDO  
64            ENDDO            ENDDO
65          ENDDO           ENDDO
66           ENDDO
67        ENDDO        ENDDO
68          _BARRIER
69    
70        _BEGIN_MASTER( myThid )        writegrid_mdsio = .TRUE.
71    #ifdef ALLOW_MNC
72          IF ( useMNC ) THEN
73            writegrid_mdsio = outputTypesInclusive .OR. .NOT.writegrid_mnc
74          ENDIF
75    #endif /* ALLOW_MNC */
76    
77          IF ( writegrid_mdsio ) THEN
78    
79  C     Write horizontal grid arrays  C     Write horizontal grid arrays
80        CALL WRITE_FLD_XY_RS( 'XC',' ',XC,0,myThid)          CALL WRITE_FLD_XY_RS( 'XC',' ',xC,-1,myThid)
81        CALL WRITE_FLD_XY_RS( 'YC',' ',YC,0,myThid)          CALL WRITE_FLD_XY_RS( 'YC',' ',yC,-1,myThid)
82        CALL WRITE_FLD_XY_RS( 'XG',' ',XG,0,myThid)          CALL WRITE_FLD_XY_RS( 'XG',' ',xG,-1,myThid)
83        CALL WRITE_FLD_XY_RS( 'YG',' ',YG,0,myThid)          CALL WRITE_FLD_XY_RS( 'YG',' ',yG,-1,myThid)
84        CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,-1,myThid)
85        CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,-1,myThid)
86        CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,-1,myThid)
87        CALL WRITE_FLD_XY_RS( 'RAZ',' ',rAz,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAZ',' ',rAz,-1,myThid)
88        CALL WRITE_FLD_XY_RS( 'DXG',' ',DXG,0,myThid)          CALL WRITE_FLD_XY_RS( 'DXG',' ',dxG,-1,myThid)
89        CALL WRITE_FLD_XY_RS( 'DYG',' ',DYG,0,myThid)          CALL WRITE_FLD_XY_RS( 'DYG',' ',dyG,-1,myThid)
90        CALL WRITE_FLD_XY_RS( 'DXC',' ',DXC,0,myThid)          CALL WRITE_FLD_XY_RS( 'DXC',' ',dxC,-1,myThid)
91        CALL WRITE_FLD_XY_RS( 'DYC',' ',DYC,0,myThid)          CALL WRITE_FLD_XY_RS( 'DYC',' ',dyC,-1,myThid)
92        IF ( usingCurvilinearGrid ) THEN          IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
93          CALL WRITE_FLD_XY_RS( 'AngleCS',' ',angleCosC,0,myThid)            CALL WRITE_FLD_XY_RS( 'AngleCS',' ',angleCosC,-1,myThid)
94          CALL WRITE_FLD_XY_RS( 'AngleSN',' ',angleSinC,0,myThid)            CALL WRITE_FLD_XY_RS( 'AngleSN',' ',angleSinC,-1,myThid)
95        ENDIF          ENDIF
96  C     Write 3D geometry arrays  C     Write 3D geometry arrays
97        CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,0,myThid)          CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,-1,myThid)
98        CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC, 0,myThid)
99        CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW, 0,myThid)
100        CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS, 0,myThid)
101        IF (buoyancyRelation .EQ. 'ATMOSPHERIC')          IF (buoyancyRelation .EQ. 'ATMOSPHERIC')
102       &     CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,0,myThid)       &     CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,-1,myThid)
103    
104    #ifdef ALLOW_MDSIO
105    C     Write vertical grid arrays
106            CALL MDSWRITEVEC_LOC_RS('RC', writeBinaryPrec, Nr, rC,
107         &                                0,0, 1, -1, myThid)
108            CALL MDSWRITEVEC_LOC_RS('RF', writeBinaryPrec,1+Nr, rF,
109         &                                0,0, 1, -1, myThid)
110            CALL MDSWRITEVEC_LOC_RS('DRC',writeBinaryPrec, Nr, drC,
111         &                                0,0, 1, -1, myThid)
112            CALL MDSWRITEVEC_LOC_RS('DRF',writeBinaryPrec, Nr, drF,
113         &                                0,0, 1, -1, myThid)
114    C--  comment out the "if": also usefull for the Ocean (to get the full Presure)
115    c       IF (buoyancyRelation .EQ. 'ATMOSPHERIC') THEN
116            DO k=1,Nr+1
117              tmpVar(k) = phiRef(2*k-1)
118            ENDDO
119            CALL MDSWRITEVEC_LOC_RS('PHrefF', writeBinaryPrec, 1+Nr,
120         &                            tmpVar, 0, 0, 1, -1, myThid)
121            DO k=1,Nr
122              tmpVar(k) = phiRef(2*k)
123            ENDDO
124            CALL MDSWRITEVEC_LOC_RS('PHrefC', writeBinaryPrec, Nr,
125         &                            tmpVar, 0, 0, 1, -1, myThid)
126    c       ENDIF
127    #endif /* ALLOW_MDSIO */
128    
129          ENDIF
130    
131        _END_MASTER(myThid)  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
132    
133  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
134        _BEGIN_MASTER( myThid )        IF ( useMNC .AND. writegrid_mnc ) THEN
135        IF (useMNC) THEN  
136            _BEGIN_MASTER( myThid )
137          bfname='grid'          bfname='grid'
138            
139  C       Write the GRID.h variables to a file  C       Write the GRID.h variables to a file
140          CALL MNC_CW_SET_UDIM(bfname, 0, myThid)          CALL MNC_CW_SET_UDIM(bfname, 0, myThid)
141          CALL MNC_CW_SET_CITER(bfname, 2, -1, -1, -1, myThid)          CALL MNC_CW_SET_CITER(bfname, 2, -1, -1, -1, myThid)
142            CALL MNC_CW_SET_UDIM(bfname, 1, myThid)
143          CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)
144          CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)
145          CALL MNC_CW_RL_W('D',bfname,0,0,'RU',rF(2),myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'RU',rF(2),myThid)
# Line 122  c       CALL MNC_CW_RL_W('D',bfname,0,0, Line 166  c       CALL MNC_CW_RL_W('D',bfname,0,0,
166          CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)
167          CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)
168          CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)
169          IF ( usingCurvilinearGrid ) THEN          IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
170            CALL MNC_CW_RL_W('D',bfname,0,0,'AngleCS',angleCosC,myThid)            CALL MNC_CW_RL_W('D',bfname,0,0,'AngleCS',angleCosC,myThid)
171            CALL MNC_CW_RL_W('D',bfname,0,0,'AngleSN',angleSinC,myThid)            CALL MNC_CW_RL_W('D',bfname,0,0,'AngleSN',angleSinC,myThid)
172          ENDIF          ENDIF
# Line 135  c       CALL MNC_CW_RL_W('D',bfname,0,0, Line 179  c       CALL MNC_CW_RL_W('D',bfname,0,0,
179          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)
180          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)
181    
182            _END_MASTER(myThid)
183    
184        ENDIF        ENDIF
       _END_MASTER(myThid)  
185  #endif /* ALLOW_MNC */  #endif /* ALLOW_MNC */
186    
187        RETURN        RETURN
188        END        END
   
 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
   

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.23

  ViewVC Help
Powered by ViewVC 1.1.22