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

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

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


Revision 1.53 - (hide annotations) (download)
Sun May 15 03:02:08 2005 UTC (19 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57m_post, checkpoint57i_post, checkpoint57n_post, checkpoint57l_post, checkpoint57p_post, checkpoint57h_done, checkpoint57j_post, checkpoint57o_post, checkpoint57k_post
Changes since 1.52: +4 -4 lines
remove "baseTime" (no used) from arg. list of DIFF_BASE_MULTIPLE
and rename it: DIFFERENT_MULTIPLE

1 jmc 1.53 C $Header: /u/gcmpack/MITgcm/model/src/do_the_model_io.F,v 1.52 2005/04/20 15:47:13 spk Exp $
2 adcroft 1.21 C $Name: $
3 cnh 1.1
4 edhill 1.32 #include "PACKAGES_CONFIG.h"
5 cnh 1.11 #include "CPP_OPTIONS.h"
6 cnh 1.1
7 edhill 1.43 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 cnh 1.22 CBOP
9     C !ROUTINE: DO_THE_MODEL_IO
10 edhill 1.43
11 cnh 1.22 C !INTERFACE:
12 edhill 1.43 SUBROUTINE DO_THE_MODEL_IO(
13     I myTime,
14     I myIter,
15     I myThid )
16    
17     C !DESCRIPTION:
18     C This is the controlling routine for IO in the model main
19     C time--stepping loop. Many systems do not have thread safe IO so it
20     C is easier to lump everything together and do dumping of fields and
21     C updating of forcing terms in a single place. The approach to IO
22     C used here is that writes are only performed by thread 1 and that a
23     C process only writes out its data (it does not know about anyone
24     C elses data!) Reading on the other hand is assumed to be from a
25     C file containing all the data for all the processes. Only the
26     C portion of data of interest to this process is actually loaded. To
27     C work well this assumes the existence of some reliable tool to join
28     C datasets together at the end of a run -- see joinds.
29 cnh 1.22
30     C !USES:
31 adcroft 1.12 IMPLICIT NONE
32 cnh 1.1 #include "SIZE.h"
33     #include "EEPARAMS.h"
34     #include "PARAMS.h"
35     #include "DYNVARS.h"
36 jmc 1.53 LOGICAL DIFFERENT_MULTIPLE
37     EXTERNAL DIFFERENT_MULTIPLE
38 cnh 1.3
39 cnh 1.22 C !INPUT/OUTPUT PARAMETERS:
40 cnh 1.1 C myThid - Thread number for this instance of the routine.
41     C myIter - Iteration number
42 jmc 1.34 C myTime - Current time of simulation ( s )
43 cnh 1.1 INTEGER myThid
44     INTEGER myIter
45 jmc 1.34 _RL myTime
46 edhill 1.43 CEOP
47 cnh 1.1
48    
49 edhill 1.43 C Generaly only thread 1 does IO here. It can not start until
50     C all threads fields are ready.
51 jmc 1.34 IF (debugMode) THEN
52 jmc 1.53 IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime,deltaTClock)
53 jmc 1.51 & ) THEN
54 cnh 1.6
55 edhill 1.43 _BARRIER
56 cnh 1.1
57 edhill 1.43 C Write "text-plots" of certain fields
58     CALL PLOT_FIELD_XYZRL( uVel , 'Current uVel ' ,
59     & Nr, myIter, myThid )
60     CALL PLOT_FIELD_XYZRL( vVel , 'Current vVel ' ,
61     & Nr, myIter, myThid )
62     CALL PLOT_FIELD_XYZRL( theta, 'Current theta ' ,
63     & Nr, myIter, myThid )
64     CALL PLOT_FIELD_XYRL( etaN , 'Current etaN ' ,
65     & myIter, myThid )
66    
67     ENDIF
68 cnh 1.3 ENDIF
69    
70 edhill 1.43 C Write model state to binary file
71 jmc 1.34 CALL WRITE_STATE( myTime, myIter, myThid )
72 cnh 1.5
73 jmc 1.19 #ifdef ALLOW_TIMEAVE
74 edhill 1.43 C Do time averages
75 jmc 1.34 IF (taveFreq.GT.0. .AND. myIter.NE.nIter0 ) THEN
76 edhill 1.43 CALL TIMEAVE_STATV_WRITE( myTime, myIter, myThid )
77 jmc 1.26 ENDIF
78 molod 1.38 #endif
79    
80     #ifdef ALLOW_FIZHI
81     if(useFIZHI) call fizhi_write_state( myTime, myIter, myThid )
82 jmc 1.26 #endif
83 jmc 1.34
84 adcroft 1.21 #ifdef ALLOW_AIM
85 edhill 1.43 C Do AIM time averages
86 jmc 1.37 IF ( useAIM )
87 edhill 1.43 & CALL AIM_WRITE_TAVE( myTime, myIter, myThid )
88 jmc 1.28 #endif
89     #ifdef ALLOW_LAND
90 edhill 1.43 C Do LAND time averages
91 jmc 1.37 IF ( useLAND )
92 edhill 1.43 & CALL LAND_WRITE_DIAGS( myTime, myIter, myThid )
93 adcroft 1.21 #endif
94 heimbach 1.29
95     #ifdef ALLOW_OBCS
96 jmc 1.34 IF (useOBCS .AND. myIter.NE.nIter0 )
97 edhill 1.43 & CALL OBCS_DIAGS( myTime, myIter, myThid )
98 heimbach 1.29 #endif
99 adcroft 1.16
100     #ifdef ALLOW_GMREDI
101 jmc 1.49 C Do GMRedi output.
102 jmc 1.34 IF (useGMRedi .AND. myIter.NE.nIter0 )
103 jmc 1.49 & CALL GMREDI_OUTPUT( myTime, myIter, myThid )
104 adcroft 1.16 #endif
105    
106     #ifdef ALLOW_KPP
107 edhill 1.43 C Do KPP diagnostics.
108 jmc 1.45 IF ( useKPP )
109 edhill 1.43 & CALL KPP_DO_DIAGS( myTime, myIter, myThid )
110 adcroft 1.16 #endif
111 cheisey 1.23
112 mlosch 1.42 #ifdef ALLOW_PP81
113 edhill 1.43 C Do PP81 diagnostics.
114 mlosch 1.42 IF (usePP81 .AND. myIter.NE.nIter0 )
115 edhill 1.43 & CALL PP81_DO_DIAGS( myTime, myIter, myThid )
116 mlosch 1.42 #endif
117    
118     #ifdef ALLOW_MY82
119 edhill 1.43 C Do MY82 diagnostics.
120 mlosch 1.42 IF (useMY82 .AND. myIter.NE.nIter0 )
121 edhill 1.43 & CALL MY82_DO_DIAGS( myTime, myIter, myThid )
122 mlosch 1.42 #endif
123    
124 mlosch 1.44 #ifdef ALLOW_OPPS
125     C-- Do OPPS diagnostics.
126     IF (useOPPS .AND. myIter.NE.nIter0 )
127     & CALL OPPS_DO_DIAGS( myTime, myIter, myThid )
128     #endif
129    
130     #ifdef ALLOW_GGL90
131     C-- Do GGL90 diagnostics.
132     IF (useGGL90 .AND. myIter.NE.nIter0 )
133     & CALL GGL90_DO_DIAGS( myTime, myIter, myThid )
134     #endif
135    
136 dimitri 1.27 #ifdef ALLOW_SBO
137 edhill 1.43 C Do SBO diagnostics.
138 jmc 1.34 IF (useSBO .AND. myIter.NE.nIter0 ) THEN
139 edhill 1.43 CALL SBO_CALC ( myTime, myIter, myThid )
140     CALL SBO_DIAGS( myTime, myIter, myThid )
141 dimitri 1.27 ENDIF
142     #endif
143 dimitri 1.40
144     #ifdef ALLOW_SEAICE
145 edhill 1.43 IF ( useSEAICE ) THEN
146     CALL SEAICE_DO_DIAGS( myTime, myIter, myThid )
147     ENDIF
148 dimitri 1.40 #endif /* ALLOW_SEAICE */
149 dimitri 1.27
150 cheisey 1.24 #ifdef ALLOW_BULK_FORCE
151 edhill 1.43 C Do bulkf diagnostics.
152 jmc 1.35 IF (useBulkForce .AND. myIter.NE.nIter0 )
153 edhill 1.43 & CALL BULKF_DIAGS( myTime, myIter, myThid )
154 cheisey 1.23 #endif
155    
156 jmc 1.35 #ifdef ALLOW_THSICE
157 jmc 1.49 C Do seaice output.
158 jmc 1.35 IF (useThSIce)
159 jmc 1.49 & CALL THSICE_OUTPUT( myTime, myIter, myThid )
160 cheisey 1.23 #endif
161 stephd 1.30
162 mlosch 1.47 #ifdef ALLOW_PTRACERS
163     C-- Do ptracer output.
164     IF ( usePTRACERS )
165     & CALL PTRACERS_OUTPUT( myTime, myIter, myThid )
166     #endif
167    
168 spk 1.52 #ifdef ALLOW_MATRIX
169     C-- Do matrix output
170     IF (useMATRIX)
171     & CALL MATRIX_OUTPUT( myTime, myIter, myThid )
172     #endif
173    
174 heimbach 1.31 #ifdef ALLOW_GCHEM
175 mlosch 1.47 C-- Do GCHEM diagnostics.
176 mlosch 1.46 IF (useGCHEM)
177 jmc 1.34 & CALL GCHEM_DIAGS( myTime, myIter, myThid )
178 stephd 1.30 #endif
179 jmc 1.36
180     #ifdef COMPONENT_MODULE
181     IF ( useCoupler )
182 edhill 1.43 & CALL CPL_WRITE_DIAGS( myTime, myIter, myThid )
183 molod 1.39 #endif
184    
185     #ifdef ALLOW_DIAGNOSTICS
186 jmc 1.50 IF ( usediagnostics )
187     & CALL DIAGNOSTICS_WRITE( myTime, myIter, myThid )
188 jmc 1.36 #endif
189 adcroft 1.16
190 cnh 1.1 RETURN
191     END

  ViewVC Help
Powered by ViewVC 1.1.22