/[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.1 by adcroft, Thu May 13 15:40:53 2004 UTC revision 1.14 by jmc, Tue Sep 6 17:50:56 2005 UTC
# Line 5  C $Name$ Line 5  C $Name$
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: \bv  C     !DESCRIPTION:
15  C     write_grid() writes the model geometry/grid arrays to file(s) using  C     Writes the model geometry and grid arrays to file(s) using which
16  C     which ever I/O package is available/active.  C     ever I/O package is available/active.  This includes horizontal
17  C      - this includes horizontal/vertical grid  C     and vertical grid and finite volume modulating factors (hFacs).
18  C      - and finite volume modulating factors (hFacs)  C     Essentailly, it dumps the contents of GRID.h to disk.
 C     To all intents and purposes it dumps the contents of GRID.h to disk.  
 C     \ev  
19    
20  C     !CALLING SEQUENCE:  C     !CALLING SEQUENCE:
21  C     INITIALIZE_FIXED  C     INITIALIZE_FIXED
# Line 29  C       |-- WRITE_GRID Line 26  C       |-- WRITE_GRID
26  #include "SIZE.h"  #include "SIZE.h"
27  #include "EEPARAMS.h"  #include "EEPARAMS.h"
28  #include "PARAMS.h"  #include "PARAMS.h"
29    #ifdef ALLOW_MNC
30    #include "MNC_PARAMS.h"
31    #endif
32  #include "GRID.h"  #include "GRID.h"
 c#include "mnc_common.h"  
33    
34  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
35  C     myThid -  Number of this instances  C     myThid -  Number of this instances
# Line 41  C     !LOCAL VARIABLES: Line 40  C     !LOCAL VARIABLES:
40  C     tmpfld  - Temporary array used to compute & write Total Depth  C     tmpfld  - Temporary array used to compute & write Total Depth
41  C               has to be in common for multi threading  C               has to be in common for multi threading
42  C     ?aja: not sure why the COMMON block is necessary - should ask JMC?  C     ?aja: not sure why the COMMON block is necessary - should ask JMC?
43        COMMON / LOCAL_INI_MASKS_ETC / tmpfld  c     COMMON / LOCAL_INI_MASKS_ETC / tmpfld
44        _RS tmpfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS tmpfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45        INTEGER i,j,bi,bj        INTEGER i,j,bi,bj
46  CEOP  CEOP
47    
48  C-- Calculate fluid thickness in R coordinates as seen by model  C     Calculate the fluid thickness in R coordinates as seen by the
49  C   (This may differ from what the user specified due to partial cells etc.)  C     model.  This may differ from what the user specified due to
50    C     partial cells, etc.
51        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
52         DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
53          DO j=1-Oly,sNy+Oly            DO j=1-Oly,sNy+Oly
54           DO i=1-Olx,sNx+Olx              DO i=1-Olx,sNx+Olx
55  C         Total fluid column thickness (r_unit) :  C             Total fluid column thickness (r_unit) :
56            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)
57           ENDDO              ENDDO
58              ENDDO
59          ENDDO          ENDDO
        ENDDO  
60        ENDDO        ENDDO
61    
62        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
63    
64  C     Write horizontal grid arrays  C     Write horizontal grid arrays
65        CALL WRITE_FLD_XY_RS( 'XC',' ',XC,0,myThid)        CALL WRITE_FLD_XY_RS( 'XC',' ',XC,0,myThid)
66        CALL WRITE_FLD_XY_RS( 'YC',' ',YC,0,myThid)        CALL WRITE_FLD_XY_RS( 'YC',' ',YC,0,myThid)
# Line 68  C     Write horizontal grid arrays Line 69  C     Write horizontal grid arrays
69        CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,0,myThid)        CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,0,myThid)
70        CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,0,myThid)        CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,0,myThid)
71        CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,0,myThid)        CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,0,myThid)
72          CALL WRITE_FLD_XY_RS( 'RAZ',' ',rAz,0,myThid)
73        CALL WRITE_FLD_XY_RS( 'DXG',' ',DXG,0,myThid)        CALL WRITE_FLD_XY_RS( 'DXG',' ',DXG,0,myThid)
74        CALL WRITE_FLD_XY_RS( 'DYG',' ',DYG,0,myThid)        CALL WRITE_FLD_XY_RS( 'DYG',' ',DYG,0,myThid)
75        CALL WRITE_FLD_XY_RS( 'DXC',' ',DXC,0,myThid)        CALL WRITE_FLD_XY_RS( 'DXC',' ',DXC,0,myThid)
76        CALL WRITE_FLD_XY_RS( 'DYC',' ',DYC,0,myThid)        CALL WRITE_FLD_XY_RS( 'DYC',' ',DYC,0,myThid)
77          IF ( usingCurvilinearGrid ) THEN
78            CALL WRITE_FLD_XY_RS( 'AngleCS',' ',angleCosC,0,myThid)
79            CALL WRITE_FLD_XY_RS( 'AngleSN',' ',angleSinC,0,myThid)
80          ENDIF
81  C     Write 3D geometry arrays  C     Write 3D geometry arrays
82        CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,0,myThid)        CALL WRITE_FLD_XY_RS( 'Depth',' ',tmpfld,0,myThid)
83        CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC,0,myThid)        CALL WRITE_FLD_XYZ_RS( 'hFacC',' ',hFacC,0,myThid)
84        CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW,0,myThid)        CALL WRITE_FLD_XYZ_RS( 'hFacW',' ',hFacW,0,myThid)
85        CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS,0,myThid)        CALL WRITE_FLD_XYZ_RS( 'hFacS',' ',hFacS,0,myThid)
86        IF (buoyancyRelation .EQ. 'ATMOSPHERIC')        IF (buoyancyRelation .EQ. 'ATMOSPHERIC')
87       &   CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,0,myThid)       &     CALL WRITE_FLD_XY_RS( 'topo_P',' ',Ro_surf,0,myThid)
88    
89        _END_MASTER(myThid)        _END_MASTER(myThid)
90    
91  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
92          _BEGIN_MASTER( myThid )
93        IF (useMNC) THEN        IF (useMNC) THEN
94        bfname='grid';          bfname='grid'
95            
96    C       Write the GRID.h variables to a file
97            CALL MNC_CW_SET_UDIM(bfname, 0, myThid)
98            CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)
99            CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)
100            CALL MNC_CW_RL_W('D',bfname,0,0,'RU',rF(2),myThid)
101            CALL MNC_CW_RL_W('D',bfname,0,0,'RL',rF,myThid)
102            CALL MNC_CW_RL_W('D',bfname,0,0,'drC',drC,myThid)
103            CALL MNC_CW_RL_W('D',bfname,0,0,'drF',drF,myThid)
104            CALL MNC_CW_RL_W('D',bfname,0,0,'XC',xC,myThid)
105            CALL MNC_CW_RL_W('D',bfname,0,0,'YC',yC,myThid)
106    c       CALL MNC_CW_RL_W('D',bfname,0,0,'XU',xG,myThid)
107    c       CALL MNC_CW_RL_W('D',bfname,0,0,'YU',yC,myThid)
108    c       CALL MNC_CW_RL_W('D',bfname,0,0,'XV',xC,myThid)
109    c       CALL MNC_CW_RL_W('D',bfname,0,0,'YV',yG,myThid)
110            CALL MNC_CW_RL_W('D',bfname,0,0,'XG',xG,myThid)
111            CALL MNC_CW_RL_W('D',bfname,0,0,'YG',yG,myThid)
112            CALL MNC_CW_RL_W('D',bfname,0,0,'dxC',dxC,myThid)
113            CALL MNC_CW_RL_W('D',bfname,0,0,'dyC',dyC,myThid)
114            CALL MNC_CW_RL_W('D',bfname,0,0,'dxF',dxF,myThid)
115            CALL MNC_CW_RL_W('D',bfname,0,0,'dyF',dyF,myThid)
116            CALL MNC_CW_RL_W('D',bfname,0,0,'dxG',dxG,myThid)
117            CALL MNC_CW_RL_W('D',bfname,0,0,'dyG',dyG,myThid)
118            CALL MNC_CW_RL_W('D',bfname,0,0,'dxV',dxV,myThid)
119            CALL MNC_CW_RL_W('D',bfname,0,0,'dyU',dyU,myThid)
120            CALL MNC_CW_RL_W('D',bfname,0,0,'rA',rA,myThid)
121            CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)
122            CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)
123            CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)
124            IF ( usingCurvilinearGrid ) THEN
125              CALL MNC_CW_RL_W('D',bfname,0,0,'AngleCS',angleCosC,myThid)
126              CALL MNC_CW_RL_W('D',bfname,0,0,'AngleSN',angleSinC,myThid)
127            ENDIF
128            CALL MNC_CW_RL_W('D',bfname,0,0,'fCori',fCori,myThid)
129            CALL MNC_CW_RL_W('D',bfname,0,0,'fCoriG',fCoriG,myThid)
130            CALL MNC_CW_RL_W('D',bfname,0,0,'R_low',R_low,myThid)
131            CALL MNC_CW_RL_W('D',bfname,0,0,'Ro_surf',Ro_surf,myThid)
132            CALL MNC_CW_RL_W('D',bfname,0,0,'Depth',tmpfld,myThid)
133            CALL MNC_CW_RL_W('D',bfname,0,0,'HFacC',HFacC,myThid)
134            CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)
135            CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)
136    
 C     Create MNC definitions for GRID.h variables  
   
 C     Coordinate arrays  
 C begin block  
 c     these definitions are made in ini_model_io() since they will be  
 c     the same in all MNC files  
 c     CALL MNC_CW_ADD_VNAME('RC', '-_-_--__C__-', 0,0, myThid)  
 c     CALL MNC_CW_ADD_VNAME('RF', '-_-_--__I__-', 0,0, myThid)  
 c     CALL MNC_CW_ADD_VNAME('XC', 'Cen_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('YC', 'Cen_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('XU', 'U_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('YU', 'U_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('XV', 'V_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('YV', 'V_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('XG', 'Cor_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VNAME('YG', 'Cor_xy_Hn__-__-', 3,4, myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('RC',1,'description',  
 c    &     'r of cell center',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('RF',1,'description',  
 c    &     'r of cell face',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('XC',1,'description',  
 c    &     'x of cell center',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('YC',1,'description',  
 c    &     'y of cell center',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('XU',1,'description',  
 c    &     'x of U point',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('YU',1,'description',  
 c    &     'y of U point',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('XV',1,'description',  
 c    &     'x of V point',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('YV',1,'description',  
 c    &     'y of V point',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('XG',1,'description',  
 c    &     'x of cell corner',myThid)  
 c     CALL MNC_CW_ADD_VATTR_TEXT('YG',1,'description',  
 c    &     'y of cell corner',myThid)  
 C end block  
   
 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)  
       CALL MNC_CW_ADD_VNAME('saFac', '-_-_--__C__-', 0,0, myThid)  
   
       CALL MNC_CW_ADD_VNAME('dxC', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('dyC', 'Cen_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', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('dyG', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('dxV', 'U_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('dyU', 'V_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('rA', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('rAw', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('rAs', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('rAz', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('fCori', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('fCoriG', 'Cen_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', 'Cen_xy_Hn__C__-', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('HFacS', 'Cen_xy_Hn__C__-', 4,5, myThid)  
   
       CALL MNC_CW_ADD_VATTR_TEXT('drC',1,'description',  
      &     'r cell center separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('drF',1,'description',  
      &     'r cell face separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('saFac',1,'description',  
      &     'shallow atmosphere factor',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dxC',1,'description',  
      &     'x cell center separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dyC',1,'description',  
      &     'y cell center separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dxF',1,'description',  
      &     'x cell face separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dyF',1,'description',  
      &     'y cell face separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dxG',1,'description',  
      &     'x cell face separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dyG',1,'description',  
      &     'y cell face separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dxV',1,'description',  
      &     'x v-velocity separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('dyU',1,'description',  
      &     'y u-velocity separation',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('rA',1,'description',  
      &     'r-face area',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('rAw',1,'description',  
      &     '',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('rAs',1,'description',  
      &     '',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('rAz',1,'description',  
      &     '',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('fCori',1,'description',  
      &     'Coriolis f',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('fCoriG',1,'description',  
      &     'Coriolis f',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('R_low',1,'description',  
      &     'base of fluid in r-units',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Ro_surf',1,'description',  
      &     'surface reference (at rest) position',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Depth',1,'description',  
      &     'fluid thickness in r coordinates (at rest)',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('HFacC',1,'description',  
      &     'C-facing vertical fraction of open cell',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('HFacW',1,'description',  
      &     'W-facing vertical fraction of open cell',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('HFacS',1,'description',  
      &     'S-facing vertical fraction of open cell',myThid)  
   
 C     Write the GRID.h variables to a file  
       CALL MNC_CW_SET_UDIM(bfname, 0, myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'RC',rC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'RF',rF,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'drC',drC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'drF',drF,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'saFac',saFac,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'XC',xC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'YC',yC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'XU',xG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'YU',yC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'XV',xC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'YV',yG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'XG',xG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'YG',yG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dxC',dxC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dyC',dyC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dxF',dxF,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dyF',dyF,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dxG',dxG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dyG',dyG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dxV',dxV,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'dyU',dyU,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'rA',rA,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'rAw',rAw,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'rAs',rAs,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'rAz',rAz,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'fCori',fCori,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'fCoriG',fCoriG,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'R_low',R_low,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'Ro_surf',Ro_surf,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'Depth',tmpfld,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'HFacC',HFacC,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'HFacW',HFacW,myThid)  
       CALL MNC_CW_RL_W('D',bfname,0,0,'HFacS',HFacS,myThid)  
137        ENDIF        ENDIF
138          _END_MASTER(myThid)
139  #endif /* ALLOW_MNC */  #endif /* ALLOW_MNC */
140    
141        RETURN        RETURN

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22