/[MITgcm]/MITgcm/pkg/ptracers/ptracers_timeave.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_timeave.F

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


Revision 1.1 - (show annotations) (download)
Sat Jan 2 23:45:46 2010 UTC (14 years, 5 months ago) by jmc
Branch: MAIN
-rename: PTRACERS_STATV.h --> PTRACERS_TAVE.h
-rename: ptracers_statvars.F --> ptracers_timeave.F
-use simpler (no level index) cumulative-time counter:ptracer_half/full(bi,bj)

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_statvars.F,v 1.9 2007/11/05 18:48:04 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: PTRACERS_TIMEAVE
8 C !INTERFACE:
9 SUBROUTINE PTRACERS_TIMEAVE(
10 I myTime, myIter, bi, bj, myThid )
11
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | S/R PTRACERS_TIMEAVE
15 C | o Time averaging routine for PTRACERS
16 C | in model main time-stepping
17 C *==========================================================*
18 C \ev
19
20 C !USES:
21 IMPLICIT NONE
22
23 C == Global variables ===
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "GRID.h"
28 #include "PTRACERS_SIZE.h"
29 #include "PTRACERS_PARAMS.h"
30 #include "PTRACERS_FIELDS.h"
31 #include "PTRACERS_TAVE.h"
32
33 C !INPUT/OUTPUT PARAMETERS:
34 C == Routine arguments ==
35 C myTime :: Current time in simulation
36 C myIter :: Iteration number
37 C bi, bj :: Tile indices
38 C myThid :: my Thread Id number
39 _RL myTime
40 INTEGER myIter
41 INTEGER bi, bj
42 INTEGER myThid
43 CEOP
44
45 #ifdef ALLOW_PTRACERS
46 #ifdef ALLOW_TIMEAVE
47
48 C !FUNCTIONS:
49 LOGICAL DIFFERENT_MULTIPLE
50 EXTERNAL DIFFERENT_MULTIPLE
51
52 C !LOCAL VARIABLES:
53 INTEGER iTr
54 _RL DDTT
55
56 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
57
58 C- Initialize fields for the first call ever
59 IF ( myIter .EQ. nIter0 ) THEN
60 DO iTr=1,PTRACERS_numInUse
61 CALL TIMEAVE_RESET( ptracerFluxtave(1-Olx,1-Oly, 1,1,iTr),
62 & 1 , bi, bj, myThid )
63 CALL TIMEAVE_RESET( ptracertave (1-Olx,1-Oly,1,1,1,iTr),
64 & Nr, bi, bj, myThid )
65 ENDDO
66 ptracer_half(bi,bj) = 0.
67 ptracer_full(bi,bj) = 0.
68 ENDIF
69
70 C-- Cumulate state-variables with Half or Full time step :
71 IF ( myIter .EQ. nIter0 .OR.
72 & DIFFERENT_MULTIPLE( PTRACERS_taveFreq, myTime, deltaTClock )
73 & ) THEN
74 DDTT = 0.5*deltaTclock
75 ELSE
76 DDTT = deltaTclock
77 ENDIF
78
79 C- Time Averages of state variables
80 DO iTr=1,PTRACERS_numInUse
81 CALL TIMEAVE_CUMULATE( ptracertave(1-Olx,1-Oly,1,1,1,iTr),
82 & pTracer(1-Olx,1-Oly,1,1,1,iTr),
83 & Nr, DDTT, bi, bj, myThid )
84 ENDDO
85 C- Keep record of how much time has been integrated over
86 ptracer_half(bi,bj) = ptracer_half(bi,bj)+DDTT
87
88 C- Time Averages of "intermediate" fields
89 IF ( myIter .NE. nIter0 ) THEN
90
91 C- Time Averages of surface fluxes
92 DO iTr=1,PTRACERS_numInUse
93 CALL TIMEAVE_CUMULATE( ptracerFluxtave(1-Olx,1-Oly,1,1,iTr),
94 & surfaceForcingPTr(1-Olx,1-Oly,1,1,iTr),
95 & 1, deltaTclock, bi, bj, myThid )
96 ENDDO
97 ptracer_full(bi,bj) = ptracer_full(bi,bj)+deltaTclock
98
99 ENDIF
100
101 #endif /* ALLOW_TIMEAVE */
102 #endif /* ALLOW_PTRACERS */
103
104 RETURN
105 END

  ViewVC Help
Powered by ViewVC 1.1.22