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

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

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

revision 1.18 by cnh, Sun Feb 4 14:38:46 2001 UTC revision 1.23 by cheisey, Fri Nov 15 19:58:21 2002 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
5    
6        SUBROUTINE DO_THE_MODEL_IO(  CBOP
7       I          forceOutput, myCurrentTime, myIter, myThid)  C     !ROUTINE: DO_THE_MODEL_IO
8  C     /==========================================================\  C     !INTERFACE:
9  C     | SUBROUTINE DO_THE_MODEL_IO                               |        SUBROUTINE DO_THE_MODEL_IO(myCurrentTime, myIter, myThid)
10  C     | o Controlling routine for IO in model main time-stepping |  C     !DESCRIPTION: \bv
11  C     |   loop.                                                  |  C     *==========================================================*
12  C     |==========================================================|  C     | SUBROUTINE DO_THE_MODEL_IO                                
13  C     | Many systems do not have thread safe IO so it is easier  |  C     | o Controlling routine for IO in model main time-stepping  
14  C     | to lump everything together and do dumping of fields     |  C     |   loop.                                                  
15  C     | and updating of forcing terms in a single place.         |  C     *==========================================================*
16  C     | The approach to IO used here is that writes are only     |  C     | Many systems do not have thread safe IO so it is easier  
17  C     | performed by thread 1 and that a process only writes out |  C     | to lump everything together and do dumping of fields      
18  C     | its data ( it does not know about anyone elses data!)    |  C     | and updating of forcing terms in a single place.          
19  C     | Reading on the other hand is assumed to be from a file   |  C     | The approach to IO used here is that writes are only      
20  C     | containing all the data for all the processes. Only the  |  C     | performed by thread 1 and that a process only writes out  
21  C     | portion of data of interest to this process is actually  |  C     | its data ( it does not know about anyone elses data!)    
22  C     | loaded. To work well this assumes the existence of some  |  C     | Reading on the other hand is assumed to be from a file    
23  C     | reliable tool to join datasets together at the end of a  |  C     | containing all the data for all the processes. Only the  
24  C     | run - see joinds.p                                       |  C     | portion of data of interest to this process is actually  
25  C     \==========================================================/  C     | loaded. To work well this assumes the existence of some  
26        IMPLICIT NONE  C     | reliable tool to join datasets together at the end of a  
27    C     | run - see joinds.p                                        
28    C     *==========================================================*
29    C     \ev
30    
31    C     !USES:
32          IMPLICIT NONE
33  C     == Global variables ===  C     == Global variables ===
34  #include "SIZE.h"  #include "SIZE.h"
35  #include "EEPARAMS.h"  #include "EEPARAMS.h"
36  #include "PARAMS.h"  #include "PARAMS.h"
37  #include "DYNVARS.h"  #include "DYNVARS.h"
38  #include "CG2D.h"  cswdblk --- add ---
39    #ifdef ALLOW_BULKFORMULA
40    #include "BULKF.h"
41    #include "FFIELDS.h"
42    #endif
43    cswdblk -- end add ---
44    cswdice -- add ---
45    #ifdef ALLOW_TSEAICE
46    #include "ICE.h"
47    #include "ICE_DIAGS.h"
48    #endif
49    cswdice -- end add ---
50    
51    
52    
53        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
54        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
55    
56    C     !INPUT/OUTPUT PARAMETERS:
57  C     == Routine arguments ==  C     == Routine arguments ==
 C     forceOutput - If .TRUE. then force I/O, indepenent of other tests  
58  C     myThid - Thread number for this instance of the routine.  C     myThid - Thread number for this instance of the routine.
59  C     myIter - Iteration number  C     myIter - Iteration number
60  C     myCurrentTime - Current time of simulation ( s )  C     myCurrentTime - Current time of simulation ( s )
       LOGICAL forceOutput  
61        INTEGER myThid        INTEGER myThid
62        INTEGER myIter        INTEGER myIter
63        _RL    myCurrentTime        _RL    myCurrentTime
64    
65  C     == Local variables ==  CEOP
66    
67  C--   Generaly only thread 1 does IO here. It can not start until  C--   Generaly only thread 1 does IO here. It can not start until
68  C--   all threads fields are ready.  C--   all threads fields are ready.
# Line 63  C--    Write "text-plots" of certain fie Line 80  C--    Write "text-plots" of certain fie
80       &                        Nr, myIter, myThid )       &                        Nr, myIter, myThid )
81         CALL PLOT_FIELD_XYZRL( theta, 'Current theta ' ,         CALL PLOT_FIELD_XYZRL( theta, 'Current theta ' ,
82       &                        Nr, myIter, myThid )       &                        Nr, myIter, myThid )
83         CALL PLOT_FIELD_XYRL( cg2d_x, 'Current cg2d_x ' ,         CALL PLOT_FIELD_XYRL( etaN  , 'Current etaN  ' ,
84       &                        myIter, myThid )       &                        myIter, myThid )
85    
86        ENDIF        ENDIF
87    
88  C--   Write model state to binary file  C--   Write model state to binary file
89        CALL WRITE_STATE( forceOutput, myCurrentTime, myIter, myThid )        CALL WRITE_STATE( myCurrentTime, myIter, myThid )
90    
91  #ifdef INCLUDE_DIAGNOSTICS_INTERFACE_CODE  #ifdef ALLOW_TIMEAVE
92  C--   Do time averages  C--   Do time averages
93        IF (taveFreq.GT.0.) THEN        IF (taveFreq.GT.0.) THEN
94         CALL WRITE_TIME_AVERAGES( myCurrentTime, myIter, myThid )         CALL TIMEAVE_STATV_WRITE( myCurrentTime, myIter, myThid )
95    #ifdef ALLOW_AIM
96           IF (useAIM)
97         &  CALL AIM_WRITE_DIAGS( myCurrentTime, myIter, myThid )
98    #endif                                                            
99        ENDIF        ENDIF
100  #endif  #endif
101    
# Line 90  C--   Do KPP diagnostics. Line 111  C--   Do KPP diagnostics.
111       & CALL KPP_DO_DIAGS( myCurrentTime, myIter, myThid )       & CALL KPP_DO_DIAGS( myCurrentTime, myIter, myThid )
112  #endif  #endif
113    
114    cswdblk ---  add ---
115    #ifdef ALLOW_BULKFORMULA
116    C--   Do bulkf diagnostics.
117          IF (useBulkf)
118         & CALL BULKF_DIAGS( myCurrentTime, myIter, myThid )
119    #endif
120    cswdblk -- end add ---
121    
122    cswdice ---  add ---
123    #ifdef ALLOW_TSEAICE
124    C--   Do seaice diagnostics.
125          IF (useSeaice)
126         & CALL ICE_DIAGS( myCurrentTime, myIter, myThid )
127    #endif
128    cswdice -- end add ---
129    
130    
131    
132        RETURN        RETURN
133        END        END
134    

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

  ViewVC Help
Powered by ViewVC 1.1.22