/[MITgcm]/MITgcm/pkg/thsice/thsice_diags.F
ViewVC logotype

Contents of /MITgcm/pkg/thsice/thsice_diags.F

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


Revision 1.5 - (show annotations) (download)
Thu Apr 8 18:54:26 2004 UTC (20 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint54f_post, checkpoint55g_post, checkpoint53f_post, checkpoint54a_pre, checkpoint55c_post, checkpoint53b_pre, checkpoint55f_post, checkpoint54a_post, checkpoint53b_post, checkpoint54, checkpoint53, checkpoint53c_post, checkpoint52n_post, checkpoint54b_post, checkpoint53d_pre, checkpoint55e_post, checkpoint54c_post, checkpoint54d_post, checkpoint53g_post, checkpoint54e_post, checkpoint55b_post, checkpoint53d_post, checkpoint55d_pre, checkpoint52m_post, checkpoint55, checkpoint53a_post, checkpoint55a_post, checkpoint55d_post
Changes since 1.4: +9 -5 lines
disable inaccurate diagnostics.

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_diags.F,v 1.4 2004/04/07 23:40:34 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: THSICE_DIAGS
8 C !INTERFACE:
9 SUBROUTINE THSICE_DIAGS( myTime, myIter, myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R THSICE_DIAGS
14 C | o Do ICE diagnostic output
15 C *==========================================================*
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 "THSICE_PARAMS.h"
27 #include "THSICE_VARS.h"
28 #include "THSICE_TAVE.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine arguments ==
32 C myTime - Current time of simulation ( s )
33 C myIter - Iteration number
34 C myThid - Number of this instance of INI_FORCING
35 _RL myTime
36 INTEGER myIter
37 INTEGER myThid
38 CEOP
39
40 #ifdef ALLOW_THSICE
41
42 C == Local variables ==
43 LOGICAL DIFFERENT_MULTIPLE
44 EXTERNAL DIFFERENT_MULTIPLE
45 INTEGER bi, bj
46 CHARACTER*(MAX_LEN_MBUF) suff
47
48 #ifdef ALLOW_TIMEAVE
49
50 c set arrays to zero if first timestep
51 IF ( myIter .EQ. nIter0 ) THEN
52 DO bj = myByLo(myThid), myByHi(myThid)
53 DO bi = myBxLo(myThid), myBxHi(myThid)
54 CALL TIMEAVE_RESET(ice_fract_Ave, 1, bi, bj, myThid)
55 CALL TIMEAVE_RESET(ice_iceH_Ave, 1, bi, bj, myThid)
56 CALL TIMEAVE_RESET(ice_snowH_Ave, 1, bi, bj, myThid)
57 CALL TIMEAVE_RESET(ice_Tsrf_Ave, 1, bi, bj, myThid)
58 CALL TIMEAVE_RESET(ice_Tice1_Ave, 1, bi, bj, myThid)
59 CALL TIMEAVE_RESET(ice_Tice2_Ave, 1, bi, bj, myThid)
60 CALL TIMEAVE_RESET(ice_snowPr_Ave, 1, bi, bj, myThid)
61 CALL TIMEAVE_RESET(ice_flx2oc_Ave, 1, bi, bj, myThid)
62 CALL TIMEAVE_RESET(ice_frw2oc_Ave, 1, bi, bj, myThid)
63 CALL TIMEAVE_RESET(ice_salFx_Ave, 1, bi, bj, myThid)
64 CALL TIMEAVE_RESET(ice_flxAtm_Ave, 1, bi, bj, myThid)
65 CALL TIMEAVE_RESET(ice_frwAtm_Ave, 1, bi, bj, myThid)
66 CALL TIMEAVE_RESET(ice_albedo_Ave, 1, bi, bj, myThid)
67 CALL TIMEAVE_RESET(ice_tMxL_Ave, 1, bi, bj, myThid)
68 CALL TIMEAVE_RESET(ice_sMxL_Ave, 1, bi, bj, myThid)
69 ice_timeAve(1,bi,bj)=0.
70 ENDDO
71 ENDDO
72
73 C Dump files and restart average computation if needed
74 ELSEIF (
75 & DIFFERENT_MULTIPLE(thSIce_taveFreq,myTime,myTime-deltaTClock)
76 & ) THEN
77
78 C Normalize by integrated time
79 DO bj = myByLo(myThid), myByHi(myThid)
80 DO bi = myBxLo(myThid), myBxHi(myThid)
81 C-- area weighted average (with ice-fraction)
82 CALL TIMEAVE_NORMA_2V( ice_iceH_Ave,
83 & ice_fract_Ave, 1, bi, bj, myThid )
84 CALL TIMEAVE_NORMA_2V( ice_snowH_Ave,
85 & ice_fract_Ave, 1, bi, bj, myThid )
86 CALL TIMEAVE_NORMA_2V( ice_Tsrf_Ave,
87 & ice_fract_Ave, 1, bi, bj, myThid )
88 CALL TIMEAVE_NORMA_2V( ice_Tice1_Ave,
89 & ice_fract_Ave, 1, bi, bj, myThid )
90 CALL TIMEAVE_NORMA_2V( ice_Tice2_Ave,
91 & ice_fract_Ave, 1, bi, bj, myThid )
92 CALL TIMEAVE_NORMA_2V( ice_snowPr_Ave,
93 & ice_fract_Ave, 1, bi, bj, myThid )
94 CALL TIMEAVE_NORMA_2V( ice_albedo_Ave,
95 & ice_fract_Ave, 1, bi, bj, myThid )
96 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
97 C-- simple time average :
98 CALL TIMEAVE_NORMALIZ(ice_fract_Ave,ice_timeAve,1 ,
99 & bi,bj,myThid)
100 c CALL TIMEAVE_NORMALIZ(ice_iceH_Ave, ice_timeAve, 1 ,
101 c & bi,bj,myThid)
102 c CALL TIMEAVE_NORMALIZ(ice_snowH_Ave, ice_timeAve, 1 ,
103 c & bi,bj,myThid)
104 c CALL TIMEAVE_NORMALIZ(ice_Tsrf_Ave, ice_timeAve, 1 ,
105 c & bi,bj,myThid)
106 c CALL TIMEAVE_NORMALIZ(ice_Tice1_Ave, ice_timeAve, 1 ,
107 c & bi,bj,myThid)
108 c CALL TIMEAVE_NORMALIZ(ice_Tice2_Ave, ice_timeAve, 1 ,
109 c & bi,bj,myThid)
110 c CALL TIMEAVE_NORMALIZ(ice_snowPr_Ave, ice_timeAve, 1 ,
111 c & bi,bj,myThid)
112 CALL TIMEAVE_NORMALIZ(ice_flx2oc_Ave, ice_timeAve, 1 ,
113 & bi,bj,myThid)
114 CALL TIMEAVE_NORMALIZ(ice_frw2oc_Ave, ice_timeAve, 1 ,
115 & bi,bj,myThid)
116 CALL TIMEAVE_NORMALIZ(ice_salFx_Ave, ice_timeAve, 1 ,
117 & bi,bj,myThid)
118 IF ( buoyancyRelation(1:7) .EQ. 'OCEANIC' ) THEN
119 CALL TIMEAVE_NORMALIZ(ice_flxAtm_Ave,ice_timeAve, 1 ,
120 & bi,bj,myThid)
121 CALL TIMEAVE_NORMALIZ(ice_frwAtm_Ave,ice_timeAve, 1 ,
122 & bi,bj,myThid)
123 ENDIF
124 IF ( stepFwd_oceMxL ) THEN
125 CALL TIMEAVE_NORMALIZ(ice_tMxL_Ave, ice_timeAve, 1 ,
126 & bi,bj,myThid)
127 CALL TIMEAVE_NORMALIZ(ice_sMxL_Ave, ice_timeAve, 1 ,
128 & bi,bj,myThid)
129 ENDIF
130 ENDDO
131 ENDDO
132
133 WRITE(suff,'(I10.10)') myIter
134
135 CALL WRITE_FLD_XY_RL('ICE_fract-T.', suff,
136 & ice_fract_Ave, myIter,myThid)
137 CALL WRITE_FLD_XY_RL('ICE_iceH-T.', suff,
138 & ice_iceH_Ave, myIter,myThid)
139 CALL WRITE_FLD_XY_RL('ICE_snowH-T.', suff,
140 & ice_snowH_Ave, myIter,myThid)
141 CALL WRITE_FLD_XY_RL('ICE_Tsrf-T.', suff,
142 & ice_Tsrf_Ave, myIter,myThid)
143 CALL WRITE_FLD_XY_RL('ICE_Tice1-T.', suff,
144 & ice_Tice1_Ave, myIter,myThid)
145 CALL WRITE_FLD_XY_RL('ICE_Tice2-T.', suff,
146 & ice_Tice2_Ave, myIter,myThid)
147 CALL WRITE_FLD_XY_RL('ICE_snowPr-T.', suff,
148 & ice_snowPr_Ave, myIter,myThid)
149 CALL WRITE_FLD_XY_RL('ICE_flx2oc-T.', suff,
150 & ice_flx2oc_Ave, myIter,myThid)
151 CALL WRITE_FLD_XY_RL('ICE_frw2oc-T.', suff,
152 & ice_frw2oc_Ave, myIter,myThid)
153 CALL WRITE_FLD_XY_RL('ICE_salFx-T.', suff,
154 & ice_salFx_Ave, myIter,myThid)
155 IF ( buoyancyRelation(1:7) .EQ. 'OCEANIC' ) THEN
156 CALL WRITE_FLD_XY_RL('ICE_flxAtm-T.', suff,
157 & ice_flxAtm_Ave, myIter,myThid)
158 CALL WRITE_FLD_XY_RL('ICE_frwAtm-T.', suff,
159 & ice_frwAtm_Ave, myIter,myThid)
160 ENDIF
161 CALL WRITE_FLD_XY_RL('ICE_albedo-T.', suff,
162 & ice_albedo_Ave, myIter,myThid)
163 IF ( stepFwd_oceMxL ) THEN
164 CALL WRITE_FLD_XY_RL('ICE_tMxL-T.', suff,
165 & ice_tMxL_Ave, myIter,myThid)
166 CALL WRITE_FLD_XY_RL('ICE_sMxL-T.', suff,
167 & ice_sMxL_Ave, myIter,myThid)
168 ENDIF
169
170
171 C Reset averages to zero
172 DO bj = myByLo(myThid), myByHi(myThid)
173 DO bi = myBxLo(myThid), myBxHi(myThid)
174 CALL TIMEAVE_RESET(ice_fract_Ave, 1, bi,bj, myThid)
175 CALL TIMEAVE_RESET(ice_iceH_Ave, 1, bi,bj, myThid)
176 CALL TIMEAVE_RESET(ice_snowH_Ave, 1, bi,bj, myThid)
177 CALL TIMEAVE_RESET(ice_Tsrf_Ave, 1, bi,bj, myThid)
178 CALL TIMEAVE_RESET(ice_Tice1_Ave, 1, bi,bj, myThid)
179 CALL TIMEAVE_RESET(ice_Tice2_Ave, 1, bi,bj, myThid)
180 CALL TIMEAVE_RESET(ice_snowPr_Ave, 1, bi,bj, myThid)
181 CALL TIMEAVE_RESET(ice_flx2oc_Ave, 1, bi,bj, myThid)
182 CALL TIMEAVE_RESET(ice_frw2oc_Ave, 1, bi,bj, myThid)
183 CALL TIMEAVE_RESET(ice_salFx_Ave, 1, bi,bj, myThid)
184 CALL TIMEAVE_RESET(ice_flxAtm_Ave, 1, bi,bj, myThid)
185 CALL TIMEAVE_RESET(ice_frwAtm_Ave, 1, bi,bj, myThid)
186 CALL TIMEAVE_RESET(ice_albedo_Ave, 1, bi,bj, myThid)
187 CALL TIMEAVE_RESET(ice_tMxL_Ave, 1, bi, bj, myThid)
188 CALL TIMEAVE_RESET(ice_sMxL_Ave, 1, bi, bj, myThid)
189 ice_timeAve(1,bi,bj) = 0.
190 ENDDO
191 ENDDO
192
193 ENDIF
194
195 #endif /* ALLOW_TIMEAVE */
196
197 C Dump a snap-shot of main state variables:
198 IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,myTime,myTime-deltaTClock)
199 & .OR. myTime.EQ.startTime
200 & .OR. myTime.EQ.endTime ) THEN
201
202 WRITE(suff,'(I10.10)') myIter
203
204 CALL WRITE_FLD_XY_RL('ice_fract.', suff,iceMask,
205 & myIter,myThid)
206 CALL WRITE_FLD_XY_RL('ice_iceH.', suff,iceheight,
207 & myIter,myThid)
208 CALL WRITE_FLD_XY_RL('ice_snowH.', suff,snowheight,
209 & myIter,myThid)
210 CALL WRITE_FLD_XY_RL('ice_Tsrf.', suff,Tsrf,
211 & myIter,myThid)
212 CALL WRITE_FLD_XY_RL('ice_Tice1.', suff,Tice1,
213 & myIter,myThid)
214 CALL WRITE_FLD_XY_RL('ice_Tice2.', suff,Tice2,
215 & myIter,myThid)
216 CALL WRITE_FLD_XY_RL('ice_Qice1.', suff,Qice1,
217 & myIter,myThid)
218 CALL WRITE_FLD_XY_RL('ice_Qice2.', suff,Qice2,
219 & myIter,myThid)
220 CALL WRITE_FLD_XY_RL('ice_snowPrc.',suff,snowPrc,
221 & myIter,myThid)
222 CALL WRITE_FLD_XY_RL('ice_snowAge.',suff,snowAge,
223 & myIter,myThid)
224 IF ( stepFwd_oceMxL ) THEN
225 CALL WRITE_FLD_XY_RL('ice_tOceMxL.', suff, tOceMxL,
226 & myIter,myThid)
227 CALL WRITE_FLD_XY_RL('ice_sOceMxL.', suff, sOceMxL,
228 & myIter,myThid)
229 ENDIF
230
231 ENDIF
232
233 IF ( thSIce_monFreq.GT. 0. _d 0 )
234 & CALL THSICE_MONITOR( myTime, myIter, myThid )
235
236 #endif /* ALLOW_THSICE */
237
238 RETURN
239 END

  ViewVC Help
Powered by ViewVC 1.1.22