/[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.43 - (hide annotations) (download)
Fri Sep 10 12:19:29 2004 UTC (19 years, 9 months ago) by edhill
Branch: MAIN
Changes since 1.42: +66 -72 lines
 o overhaul of IO so that we now have flags for MDSIO and/or MNC
   - all verification tests compile and run with linux_ia32_g77
   - defaults are compatible with current input files--nothing
     should change if you were not previously using MNC
   - MNC output has been added in numerous places (eg. timeave)
     but there are still a few writes not yet do-able with MNC
     (this is in progress)
   - flags now allow for either/or/both use of MDSIO and MNC and
     documentation will soon follow
   - numerous small formatting cleanups for ProTeX

1 edhill 1.43 C $Header: /u/gcmpack/MITgcm/model/src/do_the_model_io.F,v 1.42 2004/09/02 09:13:49 mlosch 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 cnh 1.3 LOGICAL DIFFERENT_MULTIPLE
37     EXTERNAL DIFFERENT_MULTIPLE
38    
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 edhill 1.43 IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime, 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 stephd 1.30 #ifdef ALLOW_PTRACERS
78 edhill 1.43 IF ( usePTRACERS )
79     & CALL PTRACERS_STATV_WRITE( myTime, myIter, myThid )
80 stephd 1.30 #endif
81 jmc 1.26 ENDIF
82 molod 1.38 #endif
83    
84     #ifdef ALLOW_FIZHI
85     if(useFIZHI) call fizhi_write_state( myTime, myIter, myThid )
86 jmc 1.26 #endif
87 jmc 1.34
88 adcroft 1.21 #ifdef ALLOW_AIM
89 edhill 1.43 C Do AIM time averages
90 jmc 1.37 IF ( useAIM )
91 edhill 1.43 & CALL AIM_WRITE_TAVE( myTime, myIter, myThid )
92 jmc 1.28 #endif
93     #ifdef ALLOW_LAND
94 edhill 1.43 C Do LAND time averages
95 jmc 1.37 IF ( useLAND )
96 edhill 1.43 & CALL LAND_WRITE_DIAGS( myTime, myIter, myThid )
97 adcroft 1.21 #endif
98 heimbach 1.29
99     #ifdef ALLOW_OBCS
100 jmc 1.34 IF (useOBCS .AND. myIter.NE.nIter0 )
101 edhill 1.43 & CALL OBCS_DIAGS( myTime, myIter, myThid )
102 heimbach 1.29 #endif
103 adcroft 1.16
104     #ifdef ALLOW_GMREDI
105 edhill 1.43 C Do KPP diagnostics.
106 jmc 1.34 IF (useGMRedi .AND. myIter.NE.nIter0 )
107 edhill 1.43 & CALL GMREDI_DIAGS( myTime, myIter, myThid )
108 adcroft 1.16 #endif
109    
110     #ifdef ALLOW_KPP
111 edhill 1.43 C Do KPP diagnostics.
112 jmc 1.34 IF (useKPP .AND. myIter.NE.nIter0 )
113 edhill 1.43 & CALL KPP_DO_DIAGS( myTime, myIter, myThid )
114 adcroft 1.16 #endif
115 cheisey 1.23
116 mlosch 1.42 #ifdef ALLOW_PP81
117 edhill 1.43 C Do PP81 diagnostics.
118 mlosch 1.42 IF (usePP81 .AND. myIter.NE.nIter0 )
119 edhill 1.43 & CALL PP81_DO_DIAGS( myTime, myIter, myThid )
120 mlosch 1.42 #endif
121    
122     #ifdef ALLOW_MY82
123 edhill 1.43 C Do MY82 diagnostics.
124 mlosch 1.42 IF (useMY82 .AND. myIter.NE.nIter0 )
125 edhill 1.43 & CALL MY82_DO_DIAGS( myTime, myIter, myThid )
126 mlosch 1.42 #endif
127    
128 dimitri 1.27 #ifdef ALLOW_SBO
129 edhill 1.43 C Do SBO diagnostics.
130 jmc 1.34 IF (useSBO .AND. myIter.NE.nIter0 ) THEN
131 edhill 1.43 CALL SBO_CALC ( myTime, myIter, myThid )
132     CALL SBO_DIAGS( myTime, myIter, myThid )
133 dimitri 1.27 ENDIF
134     #endif
135 dimitri 1.40
136     #ifdef ALLOW_SEAICE
137 edhill 1.43 IF ( useSEAICE ) THEN
138     CALL SEAICE_DO_DIAGS( myTime, myIter, myThid )
139     ENDIF
140 dimitri 1.40 #endif /* ALLOW_SEAICE */
141 dimitri 1.27
142 cheisey 1.24 #ifdef ALLOW_BULK_FORCE
143 edhill 1.43 C Do bulkf diagnostics.
144 jmc 1.35 IF (useBulkForce .AND. myIter.NE.nIter0 )
145 edhill 1.43 & CALL BULKF_DIAGS( myTime, myIter, myThid )
146 cheisey 1.23 #endif
147    
148 jmc 1.35 #ifdef ALLOW_THSICE
149 edhill 1.43 C Do seaice diagnostics.
150 jmc 1.35 IF (useThSIce)
151 edhill 1.43 & CALL THSICE_DIAGS( myTime, myIter, myThid )
152 cheisey 1.23 #endif
153 stephd 1.30
154     cswdptr --- add ---
155 heimbach 1.31 #ifdef ALLOW_GCHEM
156 edhill 1.32 ceh3 ??? why is one package depending upon another here?
157 stephd 1.30 C-- Do ptracer diagnostics.
158     IF (usePTRACERS)
159 jmc 1.34 & CALL GCHEM_DIAGS( myTime, myIter, myThid )
160 stephd 1.30 #endif
161     cswdptr -- end add ---
162 jmc 1.36
163     #ifdef COMPONENT_MODULE
164     IF ( useCoupler )
165 edhill 1.43 & CALL CPL_WRITE_DIAGS( myTime, myIter, myThid )
166 molod 1.39 #endif
167    
168     #ifdef ALLOW_DIAGNOSTICS
169     IF ( usediagnostics ) call diagnostics_write (myThid, myIter)
170 jmc 1.36 #endif
171 adcroft 1.16
172 cnh 1.1 RETURN
173     END

  ViewVC Help
Powered by ViewVC 1.1.22