/[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.10 by jmc, Tue Feb 22 17:09:24 2005 UTC revision 1.22 by mlosch, Fri Feb 8 13:01:25 2008 UTC
# 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_MNC
47          CHARACTER*(4) bfname
48    #endif
49  CEOP  CEOP
50    
51  C     Calculate the fluid thickness in R coordinates as seen by the  C     Calculate the fluid thickness in R coordinates as seen by the
52  C     model.  This may differ from what the user specified due to  C     model.  This may differ from what the user specified due to
53  C     partial cells, etc.  C     partial cells, etc.
54        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
55          DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
56            DO j=1-Oly,sNy+Oly           DO j=1-Oly,sNy+Oly
57              DO i=1-Olx,sNx+Olx            DO i=1-Olx,sNx+Olx
58  C             Total fluid column thickness (r_unit) :  C     Total fluid column thickness (r_unit) :
59                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  
60            ENDDO            ENDDO
61          ENDDO           ENDDO
62           ENDDO
63        ENDDO        ENDDO
64          _BARRIER
65    
66          writegrid_mdsio = .TRUE.
67    #ifdef ALLOW_MNC
68          IF ( useMNC ) THEN
69            writegrid_mdsio = outputTypesInclusive .OR. .NOT.writegrid_mnc
70          ENDIF
71    #endif /* ALLOW_MNC */
72    
73        _BEGIN_MASTER( myThid )        IF ( writegrid_mdsio ) THEN
74    
75  C     Write horizontal grid arrays  C     Write horizontal grid arrays
76        CALL WRITE_FLD_XY_RS( 'XC',' ',XC,0,myThid)          CALL WRITE_FLD_XY_RS( 'XC',' ',xC,-1,myThid)
77        CALL WRITE_FLD_XY_RS( 'YC',' ',YC,0,myThid)          CALL WRITE_FLD_XY_RS( 'YC',' ',yC,-1,myThid)
78        CALL WRITE_FLD_XY_RS( 'XG',' ',XG,0,myThid)          CALL WRITE_FLD_XY_RS( 'XG',' ',xG,-1,myThid)
79        CALL WRITE_FLD_XY_RS( 'YG',' ',YG,0,myThid)          CALL WRITE_FLD_XY_RS( 'YG',' ',yG,-1,myThid)
80        CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,-1,myThid)
81        CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,-1,myThid)
82        CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,-1,myThid)
83        CALL WRITE_FLD_XY_RS( 'DXG',' ',DXG,0,myThid)          CALL WRITE_FLD_XY_RS( 'RAZ',' ',rAz,-1,myThid)
84        CALL WRITE_FLD_XY_RS( 'DYG',' ',DYG,0,myThid)          CALL WRITE_FLD_XY_RS( 'DXG',' ',dxG,-1,myThid)
85        CALL WRITE_FLD_XY_RS( 'DXC',' ',DXC,0,myThid)          CALL WRITE_FLD_XY_RS( 'DYG',' ',dyG,-1,myThid)
86        CALL WRITE_FLD_XY_RS( 'DYC',' ',DYC,0,myThid)          CALL WRITE_FLD_XY_RS( 'DXC',' ',dxC,-1,myThid)
87            CALL WRITE_FLD_XY_RS( 'DYC',' ',dyC,-1,myThid)
88            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
89              CALL WRITE_FLD_XY_RS( 'AngleCS',' ',angleCosC,-1,myThid)
90              CALL WRITE_FLD_XY_RS( 'AngleSN',' ',angleSinC,-1,myThid)
91            ENDIF
92  C     Write 3D geometry arrays  C     Write 3D geometry arrays
93        CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,0,myThid)          CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,-1,myThid)
94        CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC, 0,myThid)
95        CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW, 0,myThid)
96        CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS,0,myThid)          CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS, 0,myThid)
97        IF (buoyancyRelation .EQ. 'ATMOSPHERIC')          IF (buoyancyRelation .EQ. 'ATMOSPHERIC')
98       &     CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,0,myThid)       &     CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,-1,myThid)
99    
100    #ifdef ALLOW_MDSIO
101    C     Write vertical grid arrays
102            CALL MDSWRITEVEC_LOC_RS('RC', writeBinaryPrec, Nr, rC,
103         &                                0,0, 1, -1, myThid)
104            CALL MDSWRITEVEC_LOC_RS('RF', writeBinaryPrec,1+Nr, rF,
105         &                                0,0, 1, -1, myThid)
106            CALL MDSWRITEVEC_LOC_RS('DRC',writeBinaryPrec, Nr, drC,
107         &                                0,0, 1, -1, myThid)
108            CALL MDSWRITEVEC_LOC_RS('DRF',writeBinaryPrec, Nr, drF,
109         &                                0,0, 1, -1, myThid)
110    #endif /* ALLOW_MDSIO */
111    
112          ENDIF
113    
114        _END_MASTER(myThid)  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
115    
116  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
117        _BEGIN_MASTER( myThid )        IF ( useMNC .AND. writegrid_mnc ) THEN
118        IF (useMNC) THEN  
119            _BEGIN_MASTER( myThid )
120          bfname='grid'          bfname='grid'
121                    
 C       Grid spacing, areas and hFacs  
         CALL MNC_CW_ADD_VNAME('drC', '-_-_--__C__-', 0,0, myThid)  
         CALL MNC_CW_ADD_VNAME('drF', '-_-_--__C__-', 0,0, myThid)  
 c       CALL MNC_CW_ADD_VNAME('saFac', '-_-_--__C__-', 0,0, myThid)  
   
         CALL MNC_CW_ADD_VNAME('dxC', 'U_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dyC', 'V_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dxF', 'Cen_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dyF', 'Cen_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dxG', 'V_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dyG', 'U_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dxV', 'Cor_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('dyU', 'Cor_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('rA',  'Cen_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('rAw', 'U_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('rAs', 'V_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('rAz', 'Cor_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('fCori', 'Cen_xy_Hn__-__-', 3,4,myThid)  
         CALL MNC_CW_ADD_VNAME('fCoriG','Cor_xy_Hn__-__-', 3,4,myThid)  
         CALL MNC_CW_ADD_VNAME('R_low','Cen_xy_Hn__-__-', 3,4, myThid)  
         CALL MNC_CW_ADD_VNAME('Ro_surf','Cen_xy_Hn__-__-',3,4,myThid)  
         CALL MNC_CW_ADD_VNAME('Depth', 'Cen_xy_Hn__-__-', 3,4,myThid)  
         CALL MNC_CW_ADD_VNAME('HFacC', 'Cen_xy_Hn__C__-', 4,5,myThid)  
         CALL MNC_CW_ADD_VNAME('HFacW', 'U_xy_Hn__C__-', 4,5,myThid)  
         CALL MNC_CW_ADD_VNAME('HFacS', 'V_xy_Hn__C__-', 4,5,myThid)  
           
         CALL MNC_CW_ADD_VATTR_TEXT('drC','description',  
      &       'r cell center separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('drF','description',  
      &       'r cell face separation',myThid)  
 c       CALL MNC_CW_ADD_VATTR_TEXT('saFac','description',  
 c    &       'shallow atmosphere factor',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dxC','description',  
      &       'x cell center separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dyC','description',  
      &       'y cell center separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dxF','description',  
      &       'x cell face separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dyF','description',  
      &     'y cell face separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dxG','description',  
      &     'x cell corner separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dyG','description',  
      &       'y cell corner separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dxV','description',  
      &       'x v-velocity separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('dyU','description',  
      &       'y u-velocity separation',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('rA','description',  
      &       'r-face area at cell center',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('rAw','description',  
      &       'r-face area at U point',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('rAs','description',  
      &       'r-face area at V point',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('rAz','description',  
      &       'r-face area at cell corner',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('fCori','description',  
      &       'Coriolis f at cell center',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('fCoriG','description',  
      &       'Coriolis f at cell corner',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('R_low','description',  
      &       'base of fluid in r-units',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('Ro_surf','description',  
      &       'surface reference (at rest) position',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('Depth','description',  
      &       'fluid thickness in r coordinates (at rest)',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('HFacC','description',  
      &       'C-facing vertical fraction of open cell',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('HFacW','description',  
      &       'W-facing vertical fraction of open cell',myThid)  
         CALL MNC_CW_ADD_VATTR_TEXT('HFacS','description',  
      &       'S-facing vertical fraction of open cell',myThid)  
           
122  C       Write the GRID.h variables to a file  C       Write the GRID.h variables to a file
123          CALL MNC_CW_SET_UDIM(bfname, 0, myThid)          CALL MNC_CW_SET_UDIM(bfname, 0, myThid)
124            CALL MNC_CW_SET_CITER(bfname, 2, -1, -1, -1, myThid)
125            CALL MNC_CW_SET_UDIM(bfname, 1, myThid)
126          CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)
127          CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)
128            CALL MNC_CW_RL_W('D',bfname,0,0,'RU',rF(2),myThid)
129            CALL MNC_CW_RL_W('D',bfname,0,0,'RL',rF,myThid)
130          CALL MNC_CW_RL_W('D',bfname,0,0,'drC',drC,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'drC',drC,myThid)
131          CALL MNC_CW_RL_W('D',bfname,0,0,'drF',drF,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'drF',drF,myThid)
 c       CALL MNC_CW_RL_W('D',bfname,0,0,'saFac',saFac,myThid)  
132          CALL MNC_CW_RL_W('D',bfname,0,0,'XC',xC,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'XC',xC,myThid)
133          CALL MNC_CW_RL_W('D',bfname,0,0,'YC',yC,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'YC',yC,myThid)
134  c       CALL MNC_CW_RL_W('D',bfname,0,0,'XU',xG,myThid)  c       CALL MNC_CW_RL_W('D',bfname,0,0,'XU',xG,myThid)
# Line 188  c       CALL MNC_CW_RL_W('D',bfname,0,0, Line 149  c       CALL MNC_CW_RL_W('D',bfname,0,0,
149          CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)
150          CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)
151          CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)
152            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
153              CALL MNC_CW_RL_W('D',bfname,0,0,'AngleCS',angleCosC,myThid)
154              CALL MNC_CW_RL_W('D',bfname,0,0,'AngleSN',angleSinC,myThid)
155            ENDIF
156          CALL MNC_CW_RL_W('D',bfname,0,0,'fCori',fCori,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'fCori',fCori,myThid)
157          CALL MNC_CW_RL_W('D',bfname,0,0,'fCoriG',fCoriG,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'fCoriG',fCoriG,myThid)
158          CALL MNC_CW_RL_W('D',bfname,0,0,'R_low',R_low,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'R_low',R_low,myThid)
# Line 197  c       CALL MNC_CW_RL_W('D',bfname,0,0, Line 162  c       CALL MNC_CW_RL_W('D',bfname,0,0,
162          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)
163          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)          CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)
164    
165            _END_MASTER(myThid)
166    
167        ENDIF        ENDIF
       _END_MASTER(myThid)  
168  #endif /* ALLOW_MNC */  #endif /* ALLOW_MNC */
169    
170        RETURN        RETURN
171        END        END
   
 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
   

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.22

  ViewVC Help
Powered by ViewVC 1.1.22