/[MITgcm]/MITgcm/verification/matrix_example/code/do_the_model_io.F
ViewVC logotype

Contents of /MITgcm/verification/matrix_example/code/do_the_model_io.F

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


Revision 1.2 - (show annotations) (download)
Wed Apr 20 18:29:58 2005 UTC (19 years ago) by spk
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -1 lines
FILE REMOVED
Removing files that are now incorporated in main code tree

1 C $Header: /u/gcmpack/MITgcm/verification/matrix_example/code/do_the_model_io.F,v 1.1 2005/04/18 20:16:30 spk Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP
9 C !ROUTINE: DO_THE_MODEL_IO
10
11 C !INTERFACE:
12 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
30 C !USES:
31 IMPLICIT NONE
32 #include "SIZE.h"
33 #include "EEPARAMS.h"
34 #include "PARAMS.h"
35 #include "DYNVARS.h"
36 LOGICAL DIFF_BASE_MULTIPLE
37 EXTERNAL DIFF_BASE_MULTIPLE
38
39 C !INPUT/OUTPUT PARAMETERS:
40 C myThid - Thread number for this instance of the routine.
41 C myIter - Iteration number
42 C myTime - Current time of simulation ( s )
43 INTEGER myThid
44 INTEGER myIter
45 _RL myTime
46 CEOP
47
48
49 C Generaly only thread 1 does IO here. It can not start until
50 C all threads fields are ready.
51 IF (debugMode) THEN
52 IF ( DIFF_BASE_MULTIPLE(baseTime,dumpFreq,myTime,deltaTClock)
53 & ) THEN
54
55 _BARRIER
56
57 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 ENDIF
69
70 C Write model state to binary file
71 CALL WRITE_STATE( myTime, myIter, myThid )
72
73 #ifdef ALLOW_TIMEAVE
74 C Do time averages
75 IF (taveFreq.GT.0. .AND. myIter.NE.nIter0 ) THEN
76 CALL TIMEAVE_STATV_WRITE( myTime, myIter, myThid )
77 ENDIF
78 #endif
79
80 #ifdef ALLOW_FIZHI
81 if(useFIZHI) call fizhi_write_state( myTime, myIter, myThid )
82 #endif
83
84 #ifdef ALLOW_AIM
85 C Do AIM time averages
86 IF ( useAIM )
87 & CALL AIM_WRITE_TAVE( myTime, myIter, myThid )
88 #endif
89 #ifdef ALLOW_LAND
90 C Do LAND time averages
91 IF ( useLAND )
92 & CALL LAND_WRITE_DIAGS( myTime, myIter, myThid )
93 #endif
94
95 #ifdef ALLOW_OBCS
96 IF (useOBCS .AND. myIter.NE.nIter0 )
97 & CALL OBCS_DIAGS( myTime, myIter, myThid )
98 #endif
99
100 #ifdef ALLOW_GMREDI
101 C Do GMRedi output.
102 IF (useGMRedi .AND. myIter.NE.nIter0 )
103 & CALL GMREDI_OUTPUT( myTime, myIter, myThid )
104 #endif
105
106 #ifdef ALLOW_KPP
107 C Do KPP diagnostics.
108 IF ( useKPP )
109 & CALL KPP_DO_DIAGS( myTime, myIter, myThid )
110 #endif
111
112 #ifdef ALLOW_PP81
113 C Do PP81 diagnostics.
114 IF (usePP81 .AND. myIter.NE.nIter0 )
115 & CALL PP81_DO_DIAGS( myTime, myIter, myThid )
116 #endif
117
118 #ifdef ALLOW_MY82
119 C Do MY82 diagnostics.
120 IF (useMY82 .AND. myIter.NE.nIter0 )
121 & CALL MY82_DO_DIAGS( myTime, myIter, myThid )
122 #endif
123
124 #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 #ifdef ALLOW_SBO
137 C Do SBO diagnostics.
138 IF (useSBO .AND. myIter.NE.nIter0 ) THEN
139 CALL SBO_CALC ( myTime, myIter, myThid )
140 CALL SBO_DIAGS( myTime, myIter, myThid )
141 ENDIF
142 #endif
143
144 #ifdef ALLOW_SEAICE
145 IF ( useSEAICE ) THEN
146 CALL SEAICE_DO_DIAGS( myTime, myIter, myThid )
147 ENDIF
148 #endif /* ALLOW_SEAICE */
149
150 #ifdef ALLOW_BULK_FORCE
151 C Do bulkf diagnostics.
152 IF (useBulkForce .AND. myIter.NE.nIter0 )
153 & CALL BULKF_DIAGS( myTime, myIter, myThid )
154 #endif
155
156 #ifdef ALLOW_THSICE
157 C Do seaice output.
158 IF (useThSIce)
159 & CALL THSICE_OUTPUT( myTime, myIter, myThid )
160 #endif
161
162 IF (.NOT.useMATRIX) THEN
163 #ifdef ALLOW_PTRACERS
164 C-- Do ptracer output.
165 IF ( usePTRACERS )
166 & CALL PTRACERS_OUTPUT( myTime, myIter, myThid )
167 #endif
168 ENDIF
169
170 #ifdef ALLOW_MATRIX
171 C-- Do matrix output
172 IF (useMATRIX .AND. myIter.NE.nIter0)
173 & CALL MATRIX_WRITE_TENDENCY( myTime, myIter, myThid )
174 #endif
175
176 #ifdef ALLOW_GCHEM
177 C-- Do GCHEM diagnostics.
178 IF (useGCHEM)
179 & CALL GCHEM_DIAGS( myTime, myIter, myThid )
180 #endif
181
182 #ifdef COMPONENT_MODULE
183 IF ( useCoupler )
184 & CALL CPL_WRITE_DIAGS( myTime, myIter, myThid )
185 #endif
186
187 #ifdef ALLOW_DIAGNOSTICS
188 IF ( usediagnostics )
189 & CALL DIAGNOSTICS_WRITE( myTime, myIter, myThid )
190 #endif
191
192 RETURN
193 END

  ViewVC Help
Powered by ViewVC 1.1.22