17 |
#include "PARAMS.h" |
#include "PARAMS.h" |
18 |
#include "DYNVARS.h" |
#include "DYNVARS.h" |
19 |
#include "GRID.h" |
#include "GRID.h" |
|
#include "FFIELDS.h" |
|
20 |
#include "TIMEAVE_STATV.h" |
#include "TIMEAVE_STATV.h" |
21 |
|
|
22 |
LOGICAL DIFFERENT_MULTIPLE |
LOGICAL DIFFERENT_MULTIPLE |
49 |
CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid) |
50 |
CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid) |
51 |
CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid) |
52 |
|
CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid) |
53 |
|
CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid) |
54 |
|
CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid) |
55 |
|
CALL TIMEAVE_RESET(UStave, Nr, bi, bj, myThid) |
56 |
|
CALL TIMEAVE_RESET(VStave, Nr, bi, bj, myThid) |
57 |
|
CALL TIMEAVE_RESET(WStave, Nr, bi, bj, myThid) |
58 |
|
#ifndef HRCUBE |
59 |
CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid) |
CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid) |
60 |
CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid) |
61 |
CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid) |
62 |
CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid) |
63 |
CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid) |
64 |
c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid) |
c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid) |
|
CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid) |
|
|
CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid) |
|
|
CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid) |
|
65 |
CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid) |
66 |
#ifndef DISABLE_MOM_VECINV |
#ifdef ALLOW_MOM_VECINV |
67 |
CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid) |
68 |
CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid) |
CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid) |
69 |
#endif |
#endif |
78 |
c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid) |
c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid) |
79 |
c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid) |
c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid) |
80 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
81 |
|
#endif /* ndef HRCUBE */ |
82 |
DO K=1,Nr |
DO K=1,Nr |
83 |
TimeAve_half(k,bi,bj)=0. |
TimeAve_half(k,bi,bj)=0. |
84 |
TimeAve_full(k,bi,bj)=0. |
TimeAve_full(k,bi,bj)=0. |
97 |
|
|
98 |
IF ( DDTT .NE. 0. _d 0) THEN |
IF ( DDTT .NE. 0. _d 0) THEN |
99 |
|
|
|
C- Time Averages of surface fluxes |
|
|
IF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN |
|
|
k=Nr |
|
|
ELSE |
|
|
k=1 |
|
|
ENDIF |
|
|
|
|
|
C uFlux |
|
|
DO j=1,sNy |
|
|
DO i=1,sNx |
|
|
tempArray(i,j,bi,bj)=fu(i,j,bi,bj)*foFacMom*_maskW(i,j,k,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
CALL TIMEAVE_CUMULATE(uFluxtave,tempArray,1,DDTT,bi,bj,myThid) |
|
|
|
|
|
C vFlux |
|
|
DO j=1,sNy |
|
|
DO i=1,sNx |
|
|
tempArray(i,j,bi,bj)=fv(i,j,bi,bj)*foFacMom*_maskS(i,j,k,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
CALL TIMEAVE_CUMULATE(vFluxtave,tempArray,1,DDTT,bi,bj,myThid) |
|
|
|
|
|
C tFlux |
|
|
DO j=1,sNy |
|
|
DO i=1,sNx |
|
|
tempArray(i,j,bi,bj)=maskC(i,j,k,bi,bj)*( |
|
|
#ifdef SHORTWAVE_HEATING |
|
|
& -Qsw(i,j,bi,bj)+ |
|
|
#endif |
|
|
& (surfaceTendencyT(i,j,bi,bj)+surfaceTendencyTice(I,J,bi,bj))* |
|
|
& HeatCapacity_Cp* |
|
|
& recip_horiVertRatio*rhoConst*drF(k)*hFacC(i,j,k,bi,bj)) |
|
|
ENDDO |
|
|
ENDDO |
|
|
CALL TIMEAVE_CUMULATE(tFluxtave,tempArray,1,DDTT,bi, bj, myThid) |
|
|
|
|
|
C sFlux |
|
|
DO j=1,sNy |
|
|
DO i=1,sNx |
|
|
tempArray(i,j,bi,bj)=maskC(i,j,k,bi,bj)* |
|
|
& surfaceTendencyS(i,j,bi,bj)* |
|
|
& recip_horiVertRatio*rhoConst*drF(k)*hFacC(i,j,k,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
CALL TIMEAVE_CUMULATE(sFluxtave,tempArray,1,DDTT,bi,bj,myThid) |
|
|
|
|
100 |
C- Time Averages of single fields (no hFactor) |
C- Time Averages of single fields (no hFactor) |
101 |
CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid) |
CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid) |
102 |
CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid) |
CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid) |
106 |
CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid) |
CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid) |
107 |
|
|
108 |
C- Time Averages of "double" fields (no hFactor) |
C- Time Averages of "double" fields (no hFactor) |
109 |
|
#ifndef HRCUBE |
110 |
CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0, |
CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0, |
111 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
112 |
CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0, |
CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0, |
117 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
118 |
CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12, |
CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12, |
119 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
120 |
|
#endif /* ndef HRCUBE */ |
121 |
c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr, |
c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr, |
122 |
c & DDTT, bi, bj, myThid) |
c & DDTT, bi, bj, myThid) |
123 |
CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3, |
CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3, |
124 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
125 |
|
CALL TIMEAVE_CUMUL_2V(WStave, salt, wVel, Nr, 3, |
126 |
|
& DDTT, bi, bj, myThid) |
127 |
|
|
128 |
#ifdef NONLIN_FRSURF |
#ifdef NONLIN_FRSURF |
129 |
|
|
132 |
c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid) |
c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid) |
133 |
|
|
134 |
C- Time Averages of single fields (* hFactor) |
C- Time Averages of single fields (* hFactor) |
135 |
|
#ifndef HRCUBE |
136 |
CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr, |
CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr, |
137 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
138 |
CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr, |
CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr, |
139 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
140 |
|
#endif /* ndef HRCUBE */ |
141 |
|
|
142 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
143 |
|
|
146 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
147 |
CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2, |
CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2, |
148 |
& DDTT, bi, bj, myThid) |
& DDTT, bi, bj, myThid) |
149 |
|
CALL TIMEAVE_CUMUL_2VFC(UStave, salt, uVel, hFacW, Nr, 1, |
150 |
|
& DDTT, bi, bj, myThid) |
151 |
|
CALL TIMEAVE_CUMUL_2VFC(VStave, salt, vVel, hFacS, Nr, 2, |
152 |
|
& DDTT, bi, bj, myThid) |
153 |
|
|
154 |
C- Time Averages of "double" fields (no hFactor) |
C- Time Averages of "double" fields (no hFactor) |
155 |
c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1, |
c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1, |
156 |
c & DDTT, bi, bj, myThid) |
c & DDTT, bi, bj, myThid) |
157 |
c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2, |
c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2, |
158 |
c & DDTT, bi, bj, myThid) |
c & DDTT, bi, bj, myThid) |
159 |
|
c CALL TIMEAVE_CUMUL_2V(UStave, salt, uVel, Nr, 1, |
160 |
|
c & DDTT, bi, bj, myThid) |
161 |
|
c CALL TIMEAVE_CUMUL_2V(VStave, salt, vVel, Nr, 2, |
162 |
|
c & DDTT, bi, bj, myThid) |
163 |
|
|
164 |
|
|
165 |
C- Keep record of how much time has been integrated over |
C- Keep record of how much time has been integrated over |
172 |
|
|
173 |
C- Time Averages of "intermediate" fields (no hFactor) |
C- Time Averages of "intermediate" fields (no hFactor) |
174 |
IF ( myIter .NE. nIter0 ) THEN |
IF ( myIter .NE. nIter0 ) THEN |
175 |
|
|
176 |
|
C- Time Averages of surface fluxes |
177 |
|
C <- moved to external_forcing_surf |
178 |
|
|
179 |
|
#ifndef HRCUBE |
180 |
CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr, |
CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr, |
181 |
& deltaTclock, bi, bj, myThid) |
& deltaTclock, bi, bj, myThid) |
182 |
CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1, |
CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1, |
183 |
& deltaTclock, bi, bj, myThid) |
& deltaTclock, bi, bj, myThid) |
184 |
CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave, |
CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave, |
185 |
& phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid) |
& phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid) |
186 |
|
#endif /* ndef HRCUBE */ |
187 |
DO K=1,Nr |
DO K=1,Nr |
188 |
TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock |
TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock |
189 |
ENDDO |
ENDDO |