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

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

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

revision 1.13 by edhill, Tue Dec 14 23:00:53 2004 UTC revision 1.23 by jmc, Wed Oct 17 22:08:13 2007 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
   
4  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6    
# Line 13  C     !INTERFACE: Line 11  C     !INTERFACE:
11        SUBROUTINE INI_MODEL_IO( myThid )        SUBROUTINE INI_MODEL_IO( myThid )
12    
13  C     !DESCRIPTION:  C     !DESCRIPTION:
14  C     Pass specific setup data to any I/O packages necessary for I/O of  C     Pass specific setup data for mdsio/rw.
 C     model state variables.  This is specifically for setting up (once  
 C     only!)  information such as shape/size of variables, units,  
 C     etc... and is primarily for state and snapshot variables.  
15    
16  C     !USES:  C     !USES:
17        IMPLICIT NONE        IMPLICIT NONE
18  #include "SIZE.h"  #include "SIZE.h"
 #include "GRID.h"  
19  #include "EEPARAMS.h"  #include "EEPARAMS.h"
20    #include "EESUPPORT.h"
21  #include "PARAMS.h"  #include "PARAMS.h"
22    
23  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
24  C     myThid -  Number of this instances  C     myThid :: my Thread Id number
25        INTEGER myThid        INTEGER myThid
26    
27    C     !FUNCTIONS
28          INTEGER  ILNBLNK
29          EXTERNAL ILNBLNK
30    
31    C     !LOCAL VARIABLES:
32    C     msgBuf :: Informational/error meesage buffer
33          CHARACTER*(MAX_LEN_MBUF) msgBuf
34          CHARACTER*(MAX_LEN_FNAM) namBuf
35          INTEGER   pIL
36  CEOP  CEOP
37    
38    C-    Safety check:
39          IF ( nPx*nPy.NE.1 .AND. globalFiles ) THEN
40            _BEGIN_MASTER( myThid )
41    c       WRITE(msgBuf,'(2A)')
42    c    &   'INI_MODEL_IO: globalFiles=TRUE is not safe',
43    c    &   ' in Multi-processors (MPI) run'
44    c       CALL PRINT_ERROR( msgBuf , myThid)
45    c       WRITE(msgBuf,'(2A)')
46    c    &   'INI_MODEL_IO: use instead "useSingleCpuIO=.TRUE."'
47    c       CALL PRINT_ERROR( msgBuf , myThid)
48    c       STOP 'ABNORMAL END: S/R INI_MODEL_IO'
49    C------
50    C   GlobalFiles option with Multi-processors execution (with MPI) is not
51    C   safe: dependending on the platform & compiler, it may produce:
52    C    - incomplete output files (wrong size)
53    C    - wrong isolated values in some output files
54    C    - missing tiles (all zeros) in some output files.
55    C   A safe alternative is to set "useSingleCpuIO=.TRUE." in file "data",
56    C     namelist PARAM01  (and to keep the default value of globalFiles=FALSE)
57    C   or if you are really sure that the globalFile works well on our platform
58    C     & compiler, comment out the above "stop"
59    C-----
60            WRITE(msgBuf,'(2A)')
61         &   '** WARNING ** INI_MODEL_IO: globalFiles=TRUE is not safe',
62         &   ' in Multi-processors (MPI) run'
63            CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
64         &                      SQUEEZE_RIGHT , myThid)
65            WRITE(msgBuf,'(2A)') '** WARNING ** INI_MODEL_IO:',
66         &   ' use instead "useSingleCpuIO=.TRUE."'
67            CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
68         &                      SQUEEZE_RIGHT , myThid)
69            _END_MASTER( myThid )
70          ENDIF
71    
72    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
73    
74    C-    Flags specific to RW and MDSIO
75    
76    C-    Only Master-thread updates IO-parameter in Common blocks:
77          _BEGIN_MASTER( myThid )
78    
79    C-    now we make local directories with myProcessStr appended
80          IF ( mdsioLocalDir .NE. ' ' ) THEN
81            pIL = ILNBLNK( mdsioLocalDir )
82            namBuf(1:pIL) = mdsioLocalDir(1:pIL)
83            WRITE(mdsioLocalDir,'(3A)') namBuf(1:pIL),myProcessStr(1:4),'/'
84          ENDIF
85    
 C     Flags specific to RW and MDSIO  
86  C     Set globalFiles flag for READ_WRITE_FLD package  C     Set globalFiles flag for READ_WRITE_FLD package
87        CALL SET_WRITE_GLOBAL_FLD( globalFiles )        CALL SET_WRITE_GLOBAL_FLD( globalFiles )
88  C     Set globalFiles flag for READ_WRITE_REC package  C     Set globalFiles flag for READ_WRITE_REC package
89        CALL SET_WRITE_GLOBAL_REC( globalFiles )        CALL SET_WRITE_GLOBAL_REC( globalFiles )
90  C     Set globalFiles flag for READ_WRITE_REC package  C     Set globalFiles flag for READ_WRITE_PICKUP
91        CALL SET_WRITE_GLOBAL_PICKUP( globalFiles )        CALL SET_WRITE_GLOBAL_PICKUP( globalFiles )
92    
93          _END_MASTER( myThid )
94    C-    Everyone else must wait for the IO-parameters to be set
95          _BARRIER
96    
97    C-    MNC model-io initialisation
98    
99  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
100        IF (useMNC) THEN        IF (useMNC) THEN
101    
102  C     Define coordinates for all MNC files ---------------------------------  C       Write units/set precision/etc for I/O of variables/arrays
103  C     XC  C       belonging to the core dynamical model
104        CALL MNC_CW_ADD_VNAME('XC', 'Cen_xy_Hn__-__-', 3,4, myThid)          CALL INI_MNC_VARS( myThid )
       CALL MNC_CW_ADD_VATTR_TEXT('XC','description',  
      &     'X coordinate of cell center (T-P point)',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XC',  
      &     'units', 'degree_east', myThid)  
   
 C     YC  
       CALL MNC_CW_ADD_VNAME('YC', 'Cen_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YC','description',  
      &     'Y coordinate of cell center (T-P point)',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YC',  
      &     'units', 'degree_north', myThid)  
   
 C     XU  
       CALL MNC_CW_ADD_VNAME('XU', 'U_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XU','description',  
      &     'X coordinate of U point',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XU',  
      &     'units', 'degree_east', myThid)  
   
 C     YU  
       CALL MNC_CW_ADD_VNAME('YU', 'U_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YU','description',  
      &     'Y coordinate of U point',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YU',  
      &     'units', 'degree_north', myThid)  
   
 C     XV  
       CALL MNC_CW_ADD_VNAME('XV', 'V_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XV','description',  
      &     'X coordinate of V point',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XV',  
      &     'units', 'degree_east', myThid)  
   
 C     YV  
       CALL MNC_CW_ADD_VNAME('YV', 'V_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YV','description',  
      &     'Y coordinate of V point',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YV',  
      &     'units', 'degree_north', myThid)  
   
 C     XG  
       CALL MNC_CW_ADD_VNAME('XG', 'Cor_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XG','description',  
      &     'X coordinate of cell corner (Vorticity point)',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('XG',  
      &     'units', 'degree_east', myThid)  
   
 C     YG  
       CALL MNC_CW_ADD_VNAME('YG', 'Cor_xy_Hn__-__-', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YG','description',  
      &     'Y coordinate of cell corner (Vorticity point)',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('YG',  
      &     'units', 'degree_north', myThid)  
   
 C     RC  
       CALL MNC_CW_ADD_VNAME('RC', '-_-_--__C__-', 0,0, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('RC','description',  
      &     'R coordinate of cell center',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('RC',  
      &     'units', 'm', myThid)  
   
 C     RF  
       CALL MNC_CW_ADD_VNAME('RF', '-_-_--__I__-', 0,0, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('RF','description',  
      &     'R coordinate of cell interface',myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('RF',  
      &     'units', 'm', myThid)  
 C     End define coordinates for all MNC files ----------------------------  
   
   
 C     Create MNC definitions for DYNVARS.h variables  
       CALL MNC_CW_ADD_VNAME('iter', '-_-_--__-__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('iter',  
      &     'long_name','iteration_count', myThid)  
   
       CALL MNC_CW_ADD_VNAME('model_time', '-_-_--__-__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('model_time',  
      &     'long_name','Model Time', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('model_time','units','s', myThid)  
   
       CALL MNC_CW_ADD_VNAME('U', 'U_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('U','units','m/s', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('U',  
      &     'coordinates','XU YU RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('V', 'V_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('V','units','m/s', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('V',  
      &     'coordinates','XV YV RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('Temp', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Temp','units','degC', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Temp','long_name',  
      &     'potential_temperature', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Temp',  
      &     'coordinates','XC YC RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('S', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('S','long_name',  
      &     'salinity', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('S',  
      &     'coordinates','XC YC RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('gUnm1', 'U_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('gVnm1', 'V_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('gTnm1', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('gSnm1', 'Cen_xy_Hn__C__t', 4,5, myThid)  
   
       CALL MNC_CW_ADD_VNAME('Eta', 'Cen_xy_Hn__-__t', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Eta','long_name',  
      &     'free-surface_r-anomaly', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Eta','units','m', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('Eta',  
      &     'coordinates','XC YC RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('EtaH', 'Cen_xy_Hn__-__t', 3,4, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('EtaH','long_name',  
      &     'column-thickness_r-anomaly', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('EtaH','units','m', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('EtaH',  
      &     'coordinates','XC YC RC iter', myThid)  
       CALL MNC_CW_ADD_VNAME('dEtaHdt', 'Cen_xy_Hn__-__t', 3,4, myThid)  
   
       CALL MNC_CW_ADD_VNAME('W', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('W','units','m/s', myThid)  
       CALL MNC_CW_ADD_VATTR_TEXT('W',  
      &     'coordinates','XC YC RC iter', myThid)  
   
       CALL MNC_CW_ADD_VNAME('phiHyd', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('phiHydLow', 'Cen_xy_Hn__-__t', 3,4, myThid)  
       CALL MNC_CW_ADD_VNAME('phi_nh', 'Cen_xy_Hn__C__t', 4,5, myThid)  
       CALL MNC_CW_ADD_VNAME('gW', 'Cen_xy_Hn__C__t', 4,5, myThid)  
   
 C     Write coordinates to "state" file  
 C     CALL MNC_CW_SET_UDIM('state', 0, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'XC',xC, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'YC',yC, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'XU',xG, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'YU',yC, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'XV',xC, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'YV',yG, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'XG',xG, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'YG',yG, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'RC',rC, myThid)  
 C     CALL MNC_CW_RS_W('R','state',0,0,'RF',rF, myThid)  
   
 C     Define variables used in mom_vecinv  
 C     CALL MNC_CW_ADD_VNAME('fV', 'Cen_xy_Hn__-__t', 0,0, myThid)  
 C     CALL MNC_CW_ADD_VATTR_TEXT('','units','', myThid)  
 C     CALL MNC_CW_ADD_VATTR_TEXT('','long_name',  
 C     &     'potential_temperature', myThid)  
         
       CALL MNC_CW_ADD_VNAME('fV', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('fU', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('zV', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('zU', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('KEx','Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('KEy','Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('Ds', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('Dt', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('Du', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('Dv', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('Z3', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('W3', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('KE', 'Cen_xy_Hn__C__t', 0,0, myThid)  
       CALL MNC_CW_ADD_VNAME('D',  'Cen_xy_Hn__C__t', 0,0, myThid)  
105    
106  #ifdef ALLOW_AUTODIFF_MONITOR  #ifdef ALLOW_AUTODIFF_MONITOR
107        CALL AUTODIFF_INI_MODEL_IO( myThid )          CALL AUTODIFF_INI_MODEL_IO( myThid )
108  #endif  #endif
109    
110        ENDIF        ENDIF
111  #endif  #endif /* ALLOW_MNC */
112    
113  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
114    

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

  ViewVC Help
Powered by ViewVC 1.1.22