/[MITgcm]/MITgcm/pkg/ocn_compon_interf/cpl_output.F
ViewVC logotype

Contents of /MITgcm/pkg/ocn_compon_interf/cpl_output.F

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


Revision 1.5 - (show annotations) (download)
Fri Mar 24 23:38:57 2017 UTC (8 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.4: +8 -2 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/ocn_compon_interf/cpl_output.F,v 1.4 2016/01/06 00:58:23 jmc Exp $
2 C $Name: $
3
4 #include "OCN_CPL_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: CPL_OUTPUT
8 C !INTERFACE:
9 SUBROUTINE CPL_OUTPUT( myTime, myIter, myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R CPL_OUTPUT
14 C | o Write CPL time-average output
15 C | - Oceanic version -
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "CPL_PARAMS.h"
27 #include "OCNCPL.h"
28 #include "CPL_TAVE.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine arguments ==
32 C myTime :: Current time in simulation
33 C myIter :: my Iteration number
34 C myThid :: my Thread Id number
35 _RL myTime
36 INTEGER myIter
37 INTEGER myThid
38 CEOP
39
40 #ifdef COMPONENT_MODULE
41 #ifdef ALLOW_TIMEAVE
42
43 C !FUNCTIONS:
44 LOGICAL DIFFERENT_MULTIPLE
45 EXTERNAL DIFFERENT_MULTIPLE
46
47 C !LOCAL VARIABLES:
48 C == Local variables ==
49 C bi,bj :: Tile index
50 C fn :: File name suffix
51 INTEGER bi,bj
52 CHARACTER*(10) suff
53 CHARACTER*(MAX_LEN_FNAM) fn
54 #ifdef ALLOW_MNC
55 CHARACTER*(1) pf
56 #endif /* ALLOW_MNC */
57
58 C Dump files and restart average computation if needed
59 IF ( myIter.NE.nIter0 .AND.
60 & DIFFERENT_MULTIPLE(cpl_taveFreq,myTime,deltaTClock)
61 & ) THEN
62
63 C Normalize by integrated time
64 DO bj = myByLo(myThid), myByHi(myThid)
65 DO bi = myBxLo(myThid), myBxHi(myThid)
66 CALL TIMEAVE_NORMALIZE(SLPtave,CPL_timeAve,1,bi,bj,myThid)
67 CALL TIMEAVE_NORMALIZE(HFtave ,CPL_timeAve,1,bi,bj,myThid)
68 CALL TIMEAVE_NORMALIZE(QSWtave,CPL_timeAve,1,bi,bj,myThid)
69 CALL TIMEAVE_NORMALIZE(TXtave ,CPL_timeAve,1,bi,bj,myThid)
70 CALL TIMEAVE_NORMALIZE(TYtave ,CPL_timeAve,1,bi,bj,myThid)
71 CALL TIMEAVE_NORMALIZE(FWtave ,CPL_timeAve,1,bi,bj,myThid)
72 CALL TIMEAVE_NORMALIZE(SFxtave,CPL_timeAve,1,bi,bj,myThid)
73 CALL TIMEAVE_NORMALIZE(SICtave,CPL_timeAve,1,bi,bj,myThid)
74 CALL TIMEAVE_NORMALIZE(MXLtave,CPL_timeAve,1,bi,bj,myThid)
75 CALL TIMEAVE_NORMALIZE(SSTtave,CPL_timeAve,1,bi,bj,myThid)
76 CALL TIMEAVE_NORMALIZE(SSStave,CPL_timeAve,1,bi,bj,myThid)
77 CALL TIMEAVE_NORMALIZE(vSqtave,CPL_timeAve,1,bi,bj,myThid)
78 #ifdef ALLOW_DIC
79 IF ( ocn_cplExch_DIC ) THEN
80 CALL TIMEAVE_NORMALIZE(aCO2tave, CPL_timeAve,1,bi,bj,myThid)
81 CALL TIMEAVE_NORMALIZE(sWSpdtave,CPL_timeAve,1,bi,bj,myThid)
82 CALL TIMEAVE_NORMALIZE(iceftave, CPL_timeAve,1,bi,bj,myThid)
83 CALL TIMEAVE_NORMALIZE(fCO2tave, CPL_timeAve,1,bi,bj,myThid)
84 ENDIF
85 #endif /* ALLOW_DIC */
86 ENDDO
87 ENDDO
88
89 IF ( cpl_timeave_mdsio ) THEN
90 IF ( rwSuffixType.EQ.0 ) THEN
91 WRITE(fn,'(A,I10.10)') 'cplFldtave.', myIter
92 ELSE
93 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
94 WRITE(fn,'(A,A)') 'cplFldtave.', suff
95 ENDIF
96 CALL WRITE_REC_XY_RL( fn, SLPtave , 1, myIter, myThid )
97 CALL WRITE_REC_XY_RL( fn, HFtave , 2, myIter, myThid )
98 CALL WRITE_REC_XY_RL( fn, QSWtave , 3, myIter, myThid )
99 CALL WRITE_REC_XY_RL( fn, TXtave , 4, myIter, myThid )
100 CALL WRITE_REC_XY_RL( fn, TYtave , 5, myIter, myThid )
101 CALL WRITE_REC_XY_RL( fn, FWtave , 6, myIter, myThid )
102 CALL WRITE_REC_XY_RL( fn, SFxtave , 7, myIter, myThid )
103 CALL WRITE_REC_XY_RL( fn, SICtave , 8, myIter, myThid )
104 CALL WRITE_REC_XY_RL( fn, MXLtave , 9, myIter, myThid )
105 CALL WRITE_REC_XY_RL( fn, SSTtave , 10, myIter, myThid )
106 CALL WRITE_REC_XY_RL( fn, SSStave , 11, myIter, myThid )
107 CALL WRITE_REC_XY_RL( fn, vSqtave , 12, myIter, myThid )
108 #ifdef ALLOW_DIC
109 IF ( ocn_cplExch_DIC ) THEN
110 CALL WRITE_REC_XY_RL( fn, aCO2tave , 13, myIter, myThid )
111 CALL WRITE_REC_XY_RL( fn, sWSpdtave, 14, myIter, myThid )
112 CALL WRITE_REC_XY_RL( fn, iceftave , 15, myIter, myThid )
113 CALL WRITE_REC_XY_RL( fn, fCO2tave , 16, myIter, myThid )
114 ENDIF
115 #endif /* ALLOW_DIC */
116 ENDIF
117
118 #ifdef ALLOW_MNC
119 IF ( useMNC.AND.cpl_timeave_mnc ) THEN
120 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
121 pf(1:1) = 'D'
122 ELSE
123 pf(1:1) = 'R'
124 ENDIF
125 CALL MNC_CW_SET_UDIM('cpl_tave', -1, myThid)
126 CALL MNC_CW_RL_W_S('D','cpl_tave',0,0,'T',myTime,myThid)
127 CALL MNC_CW_SET_UDIM('cpl_tave', 0, myThid)
128 CALL MNC_CW_I_W_S('I','cpl_tave',0,0,'iter',myIter,myThid)
129 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
130 & 'SLPtave',SLPtave,myThid)
131 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
132 & 'HFtave',HFtave,myThid)
133 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
134 & 'QSWtave',QSWtave,myThid)
135 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
136 & 'TXtave',TXtave,myThid)
137 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
138 & 'TYtave',TYtave,myThid)
139 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
140 & 'FWtave',FWtave,myThid)
141 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
142 & 'SFxtave',SFxtave,myThid)
143 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
144 & 'SICtave',SICtave,myThid)
145 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
146 & 'MXLtave',MXLtave,myThid)
147 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
148 & 'SSTtave',SSTtave,myThid)
149 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
150 & 'SSStave',SSStave,myThid)
151 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
152 & 'vSqtave',vSqtave,myThid)
153 #ifdef ALLOW_DIC
154 IF ( ocn_cplExch_DIC ) THEN
155 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
156 & 'aCO2tave',aCO2tave,myThid)
157 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
158 & 'sWSpdtave',sWSpdtave,myThid)
159 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
160 & 'iceftave',iceftave,myThid)
161 CALL MNC_CW_RL_W(pf,'cpl_tave',0,0,
162 & 'fCO2tave',fCO2tave,myThid)
163 ENDIF
164 #endif /* ALLOW_DIC */
165 ENDIF
166 #endif /* ALLOW_MNC */
167
168 C Reset diagnostic counters
169 DO bj = myByLo(myThid), myByHi(myThid)
170 DO bi = myBxLo(myThid), myBxHi(myThid)
171 CALL TIMEAVE_RESET( SLPtave, 1, bi, bj, myThid )
172 CALL TIMEAVE_RESET( HFtave , 1, bi, bj, myThid )
173 CALL TIMEAVE_RESET( QSWtave, 1, bi, bj, myThid )
174 CALL TIMEAVE_RESET( TXtave , 1, bi, bj, myThid )
175 CALL TIMEAVE_RESET( TYtave , 1, bi, bj, myThid )
176 CALL TIMEAVE_RESET( FWtave , 1, bi, bj, myThid )
177 CALL TIMEAVE_RESET( SFxtave, 1, bi, bj, myThid )
178 CALL TIMEAVE_RESET( SICtave, 1, bi, bj, myThid )
179 CALL TIMEAVE_RESET( MXLtave, 1, bi, bj, myThid )
180 CALL TIMEAVE_RESET( SSTtave, 1, bi, bj, myThid )
181 CALL TIMEAVE_RESET( SSStave, 1, bi, bj, myThid )
182 CALL TIMEAVE_RESET( vSqtave, 1, bi, bj, myThid )
183 #ifdef ALLOW_DIC
184 IF ( ocn_cplExch_DIC ) THEN
185 CALL TIMEAVE_RESET( aCO2tave , 1, bi, bj, myThid )
186 CALL TIMEAVE_RESET( sWSpdtave, 1, bi, bj, myThid )
187 CALL TIMEAVE_RESET( iceftave , 1, bi, bj, myThid )
188 CALL TIMEAVE_RESET( fCO2tave , 1, bi, bj, myThid )
189 ENDIF
190 #endif /* ALLOW_DIC */
191 CPL_timeAve(bi,bj) = 0.
192 ENDDO
193 ENDDO
194
195 ENDIF
196
197 #endif /* ALLOW_TIMEAVE */
198 #endif /* COMPONENT_MODULE */
199
200 RETURN
201 END

  ViewVC Help
Powered by ViewVC 1.1.22