/[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.51 - (hide annotations) (download)
Wed Apr 6 18:29:53 2005 UTC (19 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57g_pre, checkpoint57g_post, checkpoint57f_post
Changes since 1.50: +5 -5 lines
use baseTime as time origin ; DIFF_BASE_MULTIPLE replaces DIFFERENT_MULTIPLE

1 jmc 1.51 C $Header: /u/gcmpack/MITgcm/model/src/do_the_model_io.F,v 1.50 2005/02/06 23:20:35 jmc 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.51 LOGICAL DIFF_BASE_MULTIPLE
37     EXTERNAL DIFF_BASE_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.51 IF ( DIFF_BASE_MULTIPLE(baseTime,dumpFreq,myTime,deltaTClock)
53     & ) 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 heimbach 1.31 #ifdef ALLOW_GCHEM
169 mlosch 1.47 C-- Do GCHEM diagnostics.
170 mlosch 1.46 IF (useGCHEM)
171 jmc 1.34 & CALL GCHEM_DIAGS( myTime, myIter, myThid )
172 stephd 1.30 #endif
173 jmc 1.36
174     #ifdef COMPONENT_MODULE
175     IF ( useCoupler )
176 edhill 1.43 & CALL CPL_WRITE_DIAGS( myTime, myIter, myThid )
177 molod 1.39 #endif
178    
179     #ifdef ALLOW_DIAGNOSTICS
180 jmc 1.50 IF ( usediagnostics )
181     & CALL DIAGNOSTICS_WRITE( myTime, myIter, myThid )
182 jmc 1.36 #endif
183 adcroft 1.16
184 cnh 1.1 RETURN
185     END

  ViewVC Help
Powered by ViewVC 1.1.22