/[MITgcm]/MITgcm/pkg/kpp/kpp_do_diags.F
ViewVC logotype

Contents of /MITgcm/pkg/kpp/kpp_do_diags.F

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


Revision 1.5 - (show annotations) (download)
Tue Mar 6 18:01:02 2001 UTC (23 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint47e_post, ecco_c44_e19, checkpoint46l_post, checkpoint46g_pre, checkpoint47c_post, checkpoint46f_post, checkpoint48e_post, checkpoint46b_post, checkpoint43a-release1mods, checkpoint44g_post, checkpoint48c_post, checkpoint40pre3, checkpoint40pre2, checkpoint40pre1, checkpoint40pre7, checkpoint40pre6, checkpoint40pre9, checkpoint40pre8, checkpoint46l_pre, chkpt44d_post, release1_p8, release1_p9, release1_p1, release1_p2, release1_p3, release1_p4, release1_p5, release1_p6, release1_p7, checkpoint44e_pre, release1_b1, checkpoint48b_post, checkpoint43, checkpoint48c_pre, checkpoint38, release1_chkpt44d_post, chkpt44c_pre, checkpoint48d_pre, checkpoint47i_post, checkpoint47d_post, checkpoint46d_pre, checkpoint48d_post, release1-branch_tutorials, checkpoint45d_post, checkpoint46j_pre, checkpoint47d_pre, chkpt44a_post, checkpoint44h_pre, checkpoint40pre4, checkpoint46a_post, checkpoint47g_post, chkpt44c_post, checkpoint46j_post, checkpoint46k_post, checkpoint46b_pre, checkpoint45a_post, checkpoint44e_post, ecco_c44_e18, ecco_c44_e17, ecco_c44_e16, release1_p10, pre38tag1, checkpoint47a_post, checkpoint46e_pre, checkpoint45b_post, release1-branch-end, c37_adj, release1_final_v1, checkpoint46c_pre, checkpoint44f_post, checkpoint47b_post, checkpoint44b_post, checkpoint46h_pre, checkpoint46m_post, checkpoint46a_pre, checkpoint45c_post, ecco_ice1, checkpoint44h_post, pre38-close, checkpoint46g_post, checkpoint39, checkpoint37, checkpoint46i_post, ecco_c44_e25, checkpoint48a_post, checkpoint47j_post, branch-exfmods-tag, checkpoint40pre5, checkpoint47f_post, chkpt44a_pre, ecco_c44_e22, ecco_c44_e23, ecco_c44_e20, ecco_c44_e21, ecco_c44_e24, checkpoint46c_post, ecco-branch-mod1, ecco-branch-mod2, ecco-branch-mod3, ecco-branch-mod4, ecco-branch-mod5, checkpoint46e_post, release1_beta1, checkpoint44b_pre, checkpoint42, checkpoint40, checkpoint41, checkpoint46, checkpoint47, checkpoint44, checkpoint45, checkpoint48, checkpoint46h_post, checkpoint47h_post, checkpoint44f_pre, checkpoint46d_post, release1-branch_branchpoint
Branch point for: c24_e25_ice, branch-exfmods-curt, release1_coupled, release1_final, release1-branch, release1, ecco-branch, pre38
Changes since 1.4: +45 -57 lines
change Time-Average routine names (new package) ; use CPP-opt ALLOW_TIMEAVE

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/kpp/kpp_do_diags.F,v 1.4 2001/02/04 14:38:50 cnh Exp $
2 C $Name: $
3
4 #include "KPP_OPTIONS.h"
5
6 SUBROUTINE KPP_DO_DIAGS( myCurrentTime, myIter, myThid )
7 C /==========================================================\
8 C | SUBROUTINE KPP_DO_DIAGS |
9 C | o Do KPP diagnostic output. |
10 C |==========================================================|
11 C | Right now this subroutine assumes JPL direct access I/O |
12 C | format. You will need to update this with your favorite |
13 C | I/O package. |
14 C \==========================================================/
15 IMPLICIT NONE
16
17 C === Global variables ===
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "KPP.h"
22 #include "KPP_PARAMS.h"
23 #include "KPP_DIAGS.h"
24
25 C == Routine arguments ==
26 C myCurrentTime - Current time of simulation ( s )
27 C myIter - Iteration number
28 C myThid - Number of this instance of INI_FORCING
29 _RL myCurrentTime
30 INTEGER myIter
31 INTEGER myThid
32
33 #ifdef ALLOW_KPP
34
35 C == Local variables ==
36 LOGICAL DIFFERENT_MULTIPLE
37 EXTERNAL DIFFERENT_MULTIPLE
38 INTEGER bi, bj, K
39 _RL DDTT
40
41 C----------------------------------------------------------------
42 C Dump snapshot of KPP variables.
43 C----------------------------------------------------------------
44
45 IF (
46 & DIFFERENT_MULTIPLE(dumpFreq,myCurrentTime,
47 & myCurrentTime-deltaTClock)
48 & ) THEN
49
50 IF (KPPmixingMaps) THEN
51 CALL PLOT_FIELD_XYRL ( KPPhbl , 'KPPhbl' ,
52 & myIter, myThid )
53 CALL PLOT_FIELD_XYZRL ( KPPviscAz , 'KPPviscAz' ,
54 & Nr, myIter, myThid )
55 CALL PLOT_FIELD_XYZRL ( KPPdiffKzT, 'KPPdiffKzT',
56 & Nr, myIter, myThid )
57 CALL PLOT_FIELD_XYZRL ( KPPghat , 'KPPghat' ,
58 & Nr, myIter, myThid )
59 ENDIF
60
61 if (KPPwriteState) then
62 CALL WRITE_REC_XYZ_RL('KPPviscAz',KPPviscAz,kpp_drctrec,
63 & myIter,myThid)
64 CALL WRITE_REC_XYZ_RL('KPPdiffKzT',KPPdiffKzT,kpp_drctrec,
65 & myIter,myThid)
66 CALL WRITE_REC_XYZ_RL('KPPdiffKzS',KPPdiffKzS,kpp_drctrec,
67 & myIter,myThid)
68 CALL WRITE_REC_XYZ_RL('KPPghat',KPPghat,kpp_drctrec,
69 & myIter,myThid)
70 CALL WRITE_REC_XY_RL('KPPhbl',KPPhbl,kpp_drctrec,
71 & myIter,myThid)
72 endif
73
74 C-- Increment record counter
75 kpp_drctrec = kpp_drctrec + 1
76
77 ENDIF
78
79 C----------------------------------------------------------------
80 C Do KPP time averaging.
81 C----------------------------------------------------------------
82
83 #ifdef ALLOW_TIMEAVE
84
85 C Initialize averages to zero
86 IF ( myIter.EQ.nIter0 ) THEN
87 DO bj = myByLo(myThid), myByHi(myThid)
88 DO bi = myBxLo(myThid), myBxHi(myThid)
89 CALL TIMEAVE_RESET(KPPviscAztave, Nr,bi,bj,myThid)
90 CALL TIMEAVE_RESET(KPPdiffKzTtave,Nr,bi,bj,myThid)
91 CALL TIMEAVE_RESET(KPPghattave, Nr,bi,bj,myThid)
92 CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
93 CALL TIMEAVE_RESET(KPPhbltave, 1, bi,bj,myThid)
94 DO k=1,Nr
95 kpp_TimeAve(k,bi,bj)=0.
96 ENDDO
97 ENDDO
98 ENDDO
99 ENDIF
100
101 C Time Average KPP fields
102 IF ( myIter .EQ. nIter0 .OR.
103 & DIFFERENT_MULTIPLE
104 & (taveFreq,myCurrentTime,myCurrentTime-deltaTClock) )
105 & THEN
106 DDTT=0.5*deltaTclock
107 ELSE
108 DDTT=deltaTclock
109 ENDIF
110 DO bj = myByLo(myThid), myByHi(myThid)
111 DO bi = myBxLo(myThid), myBxHi(myThid)
112 CALL TIMEAVE_CUMULATE(
113 & KPPviscAztave, KPPviscAz, Nr,DDTT,bi,bj,myThid)
114 CALL TIMEAVE_CUMULATE(
115 & KPPdiffKzTtave,KPPdiffKzT,Nr,DDTT,bi,bj,myThid)
116 CALL TIMEAVE_CUMULATE(
117 & KPPghattave, KPPghat, Nr,DDTT,bi,bj,myThid)
118 CALL TIMEAVE_CUMULATE(
119 & KPPdiffKzStave,KPPdiffKzS,Nr,DDTT,bi,bj,myThid)
120 CALL TIMEAVE_CUMULATE(
121 & KPPhbltave, KPPhbl, 1, DDTT,bi,bj,myThid)
122 C Keep record of how much time has been integrated over
123 DO k=1,Nr
124 kpp_TimeAve(k,bi,bj)=kpp_TimeAve(k,bi,bj)+DDTT
125 ENDDO
126 ENDDO
127 ENDDO
128
129 C Dump files and restart average computation if needed
130 IF ( myIter.NE.nIter0 .AND.
131 & DIFFERENT_MULTIPLE(taveFreq,myCurrentTime,
132 & myCurrentTime-deltaTClock)
133 & ) THEN
134
135 C Normalize by integrated time
136 DO bj = myByLo(myThid), myByHi(myThid)
137 DO bi = myBxLo(myThid), myBxHi(myThid)
138 CALL TIMEAVE_NORMALIZ(KPPviscAztave,kpp_timeave,
139 & Nr, bi,bj,myThid)
140 CALL TIMEAVE_NORMALIZ(KPPdiffKzTtave,kpp_timeave,
141 & Nr, bi,bj,myThid)
142 CALL TIMEAVE_NORMALIZ(KPPghattave,kpp_timeave,
143 & Nr, bi,bj,myThid)
144 CALL TIMEAVE_NORMALIZ(KPPdiffKzStave,kpp_timeave,
145 & Nr, bi,bj,myThid)
146 CALL TIMEAVE_NORMALIZ(KPPhbltave,kpp_timeave,
147 & 1, bi,bj,myThid)
148 ENDDO
149 ENDDO
150
151 CALL WRITE_REC_XYZ_RS('KPPviscAz-T',KPPviscAzTave,
152 & kpp_drctrecTave,myIter,myThid)
153 CALL WRITE_REC_XYZ_RS('KPPdiffKzT-T',KPPdiffKzTTave,
154 & kpp_drctrecTave,myIter,myThid)
155 CALL WRITE_REC_XYZ_RS('KPPdiffKzS-T',KPPdiffKzSTave,
156 & kpp_drctrecTave,myIter,myThid)
157 CALL WRITE_REC_XYZ_RS('KPPghat-T',KPPghatTave,
158 & kpp_drctrecTave,myIter,myThid)
159 CALL WRITE_REC_XY_RS('KPPhbl-T',KPPhblTave,
160 & kpp_drctrecTave,myIter,myThid)
161
162 C-- Increment record counter
163 kpp_drctrecTave = kpp_drctrecTave + 1
164
165 C Reset averages to zero
166 DO bj = myByLo(myThid), myByHi(myThid)
167 DO bi = myBxLo(myThid), myBxHi(myThid)
168 CALL TIMEAVE_RESET(KPPviscAztave, Nr,bi,bj,myThid)
169 CALL TIMEAVE_RESET(KPPdiffKzTtave,Nr,bi,bj,myThid)
170 CALL TIMEAVE_RESET(KPPghattave, Nr,bi,bj,myThid)
171 CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
172 CALL TIMEAVE_RESET(KPPhbltave, 1, bi,bj,myThid)
173 DO k=1,Nr
174 kpp_TimeAve(k,bi,bj)=0.
175 ENDDO
176 ENDDO
177 ENDDO
178
179 C Time Average KPP fields
180 DDTT=0.5*deltaTclock
181 DO bj = myByLo(myThid), myByHi(myThid)
182 DO bi = myBxLo(myThid), myBxHi(myThid)
183 CALL TIMEAVE_CUMULATE(
184 & KPPviscAztave, KPPviscAz, Nr,DDTT,bi,bj,myThid)
185 CALL TIMEAVE_CUMULATE(
186 & KPPdiffKzTtave,KPPdiffKzT,Nr,DDTT,bi,bj,myThid)
187 CALL TIMEAVE_CUMULATE(
188 & KPPghattave, KPPghat, Nr,DDTT,bi,bj,myThid)
189 CALL TIMEAVE_CUMULATE(
190 & KPPdiffKzStave,KPPdiffKzS,Nr,DDTT,bi,bj,myThid)
191 CALL TIMEAVE_CUMULATE(
192 & KPPhbltave, KPPhbl, 1, DDTT,bi,bj,myThid)
193 C Keep record of how much time has been integrated over
194 DO k=1,Nr
195 kpp_TimeAve(k,bi,bj)=kpp_TimeAve(k,bi,bj)+DDTT
196 ENDDO
197 ENDDO
198 ENDDO
199 ENDIF
200
201 #endif
202
203 #endif
204
205 RETURN
206 END

  ViewVC Help
Powered by ViewVC 1.1.22