/[MITgcm]/MITgcm/pkg/timeave/timeave_statvars.F
ViewVC logotype

Annotation of /MITgcm/pkg/timeave/timeave_statvars.F

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


Revision 1.10 - (hide annotations) (download)
Thu Oct 23 07:14:49 2003 UTC (20 years, 6 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint51n_post
Branch point for: checkpoint51n_branch
Changes since 1.9: +55 -2 lines
o modifications to make FREEZE flux visible to pkg/kpp
  - moved surfaceTendencyTice from pkg/seaice to main code
  - FREEZE & EXTERNAL_FORCING_SURF moved to FORWARD_STEP
  - subroutine FREEZE now limits only surface temperature
    (this means new output.txt for global_ocean.90x40x15,
     global_ocean.cs32x15, and global_with_exf)
o added surface flux output variables to TIMEAVE_STATVARS

1 dimitri 1.10 C $Header: /usr/local/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.9 2003/10/09 04:19:20 edhill Exp $
2 jmc 1.1 C $Name: $
3 edhill 1.9 #include "TIMEAVE_OPTIONS.h"
4 jmc 1.1
5     SUBROUTINE TIMEAVE_STATVARS(
6     I myTime, myIter, bi, bj, myThid)
7     C /==========================================================\
8     C | SUBROUTINE TIMEAVE_STATVARS |
9     C | o Time averaging routine for eta, U, V, W, T, S, UT, VT |
10     C | in model main time-stepping |
11     C \==========================================================/
12     IMPLICIT NONE
13    
14     C == Global variables ===
15     #include "SIZE.h"
16     #include "EEPARAMS.h"
17     #include "PARAMS.h"
18     #include "DYNVARS.h"
19 jmc 1.3 #include "GRID.h"
20 dimitri 1.10 #include "FFIELDS.h"
21 jmc 1.1 #include "TIMEAVE_STATV.h"
22    
23     LOGICAL DIFFERENT_MULTIPLE
24     EXTERNAL DIFFERENT_MULTIPLE
25    
26     C == Routine arguments ==
27     C myThid - Thread number for this instance of the routine.
28     C myIter - Iteration number
29     C myTime - Current time of simulation ( s )
30     INTEGER myThid
31     INTEGER myIter, bi, bj
32     _RL myTime
33    
34 jmc 1.3 #ifdef ALLOW_TIMEAVE
35    
36 jmc 1.1 C == Local variables ==
37 dimitri 1.10 INTEGER I, J, K
38 jmc 1.1 _RL DDTT
39 dimitri 1.10 _RL tempArray (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
40 jmc 1.1
41     C- Initialize fields for the first call ever
42     IF ( myIter .EQ. nIter0 ) THEN
43 dimitri 1.10 CALL TIMEAVE_RESET(uFluxtave, 1, bi, bj, myThid)
44     CALL TIMEAVE_RESET(vFluxtave, 1, bi, bj, myThid)
45     CALL TIMEAVE_RESET(tFluxtave, 1, bi, bj, myThid)
46     CALL TIMEAVE_RESET(sFluxtave, 1, bi, bj, myThid)
47 jmc 1.3 CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
48 jmc 1.1 CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
49     CALL TIMEAVE_RESET(salttave, Nr, bi, bj, myThid)
50     CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid)
51     CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid)
52     CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid)
53 jmc 1.3
54     CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
55 adcroft 1.2 CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid)
56     CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid)
57     CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid)
58 jmc 1.7 CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid)
59 jmc 1.3 c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid)
60     CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
61     CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
62     CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
63 jmc 1.7 CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
64 jmc 1.8 #ifndef DISABLE_MOM_VECINV
65     CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
66     CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
67     #endif
68 jmc 1.3 CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
69 mlosch 1.4 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
70     CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
71 jmc 1.1 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
72 jmc 1.3 #ifdef NONLIN_FRSURF
73     CALL TIMEAVE_RESET(hUtave, Nr, bi, bj, myThid)
74     CALL TIMEAVE_RESET(hVtave, Nr, bi, bj, myThid)
75     c CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
76     c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
77     c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
78     #endif /* NONLIN_FRSURF */
79 jmc 1.1 DO K=1,Nr
80     TimeAve_half(k,bi,bj)=0.
81     TimeAve_full(k,bi,bj)=0.
82     ENDDO
83     ENDIF
84    
85     C-- Cumulate state-variables with Half or Full time step :
86 jmc 1.5 IF ( myIter .EQ. nIter0 ) THEN
87     DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
88     ELSEIF (
89 jmc 1.1 & DIFFERENT_MULTIPLE(taveFreq, myTime, myTime-deltaTClock)) THEN
90 jmc 1.5 DDTT = deltaTclock*tave_lastIter
91 jmc 1.1 ELSE
92 jmc 1.5 DDTT = deltaTclock
93 jmc 1.1 ENDIF
94    
95 jmc 1.5 IF ( DDTT .NE. 0. _d 0) THEN
96 dimitri 1.10
97     C- Time Averages of surface fluxes
98     IF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
99     k=Nr
100     ELSE
101     k=1
102     ENDIF
103    
104     C uFlux
105     DO j=1,sNy
106     DO i=1,sNx
107     tempArray(i,j,bi,bj)=fu(i,j,bi,bj)*foFacMom*_maskW(i,j,k,bi,bj)
108     ENDDO
109     ENDDO
110     CALL TIMEAVE_CUMULATE(uFluxtave,tempArray,1,DDTT,bi,bj,myThid)
111    
112     C vFlux
113     DO j=1,sNy
114     DO i=1,sNx
115     tempArray(i,j,bi,bj)=fv(i,j,bi,bj)*foFacMom*_maskS(i,j,k,bi,bj)
116     ENDDO
117     ENDDO
118     CALL TIMEAVE_CUMULATE(vFluxtave,tempArray,1,DDTT,bi,bj,myThid)
119    
120     C tFlux
121     DO j=1,sNy
122     DO i=1,sNx
123     tempArray(i,j,bi,bj)=maskC(i,j,k,bi,bj)*(
124     #ifdef SHORTWAVE_HEATING
125     & -Qsw(i,j,bi,bj)+
126     #endif
127     & (surfaceTendencyT(i,j,bi,bj)+surfaceTendencyTice(I,J,bi,bj))*
128     & HeatCapacity_Cp*
129     & recip_horiVertRatio*rhoConst*drF(k)*hFacC(i,j,k,bi,bj))
130     ENDDO
131     ENDDO
132     CALL TIMEAVE_CUMULATE(tFluxtave,tempArray,1,DDTT,bi, bj, myThid)
133    
134     C sFlux
135     DO j=1,sNy
136     DO i=1,sNx
137     tempArray(i,j,bi,bj)=maskC(i,j,k,bi,bj)*
138     & surfaceTendencyS(i,j,bi,bj)*
139     & recip_horiVertRatio*rhoConst*drF(k)*hFacC(i,j,k,bi,bj)
140     ENDDO
141     ENDDO
142     CALL TIMEAVE_CUMULATE(sFluxtave,tempArray,1,DDTT,bi,bj,myThid)
143 jmc 1.5
144 jmc 1.3 C- Time Averages of single fields (no hFactor)
145     CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
146 jmc 1.1 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
147     CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
148     CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
149     CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
150 jmc 1.7 CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
151 jmc 1.1
152 jmc 1.3 C- Time Averages of "double" fields (no hFactor)
153     CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
154     & DDTT, bi, bj, myThid)
155     CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
156     & DDTT, bi, bj, myThid)
157     CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
158     & DDTT, bi, bj, myThid)
159     CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
160 jmc 1.7 & DDTT, bi, bj, myThid)
161     CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12,
162 jmc 1.3 & DDTT, bi, bj, myThid)
163     c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
164     c & DDTT, bi, bj, myThid)
165 jmc 1.5 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
166     & DDTT, bi, bj, myThid)
167 jmc 1.3
168     #ifdef NONLIN_FRSURF
169    
170     c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
171     c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
172     c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
173    
174     C- Time Averages of single fields (* hFactor)
175     CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
176     & DDTT, bi, bj, myThid)
177     CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
178     & DDTT, bi, bj, myThid)
179    
180     #endif /* NONLIN_FRSURF */
181    
182     C- Time Averages of "double" fields (* hFactor)
183     CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
184     & DDTT, bi, bj, myThid)
185     CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
186     & DDTT, bi, bj, myThid)
187    
188     C- Time Averages of "double" fields (no hFactor)
189     c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
190     c & DDTT, bi, bj, myThid)
191     c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
192     c & DDTT, bi, bj, myThid)
193    
194 jmc 1.1
195     C- Keep record of how much time has been integrated over
196     DO K=1,Nr
197     TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
198     ENDDO
199    
200 jmc 1.5 C-- end if DDTT ...
201     ENDIF
202 jmc 1.3
203     C- Time Averages of "intermediate" fields (no hFactor)
204 jmc 1.1 IF ( myIter .NE. nIter0 ) THEN
205 jmc 1.6 CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr,
206     & deltaTclock, bi, bj, myThid)
207     CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
208     & deltaTclock, bi, bj, myThid)
209 mlosch 1.4 CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
210     & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
211 jmc 1.1 DO K=1,Nr
212     TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
213     ENDDO
214     ENDIF
215 jmc 1.3
216     #endif /* ALLOW_TIMEAVE */
217 jmc 1.1
218     RETURN
219     END

  ViewVC Help
Powered by ViewVC 1.1.22