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

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

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


Revision 1.1 - (hide 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 jmc 1.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