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

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

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


Revision 1.4 - (show annotations) (download)
Fri Jun 26 23:10:10 2009 UTC (14 years, 11 months ago) by jahn
Branch: MAIN
CVS Tags: checkpoint62, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61s, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.3: +67 -5 lines
add package longstep

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_diagnostics_state.F,v 1.3 2007/11/10 22:09:32 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP 1
8 C !ROUTINE: PTRACERS_DIAGNOSTICS_STATE
9
10 C !INTERFACE:
11 SUBROUTINE PTRACERS_DIAGNOSTICS_STATE(myTime, myIter, myThid)
12
13 C !DESCRIPTION:
14 C Fill-in the diagnostics array for PTRACERS state variables
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "GRID.h"
22 #include "DYNVARS.h"
23 #include "PTRACERS_SIZE.h"
24 #include "PTRACERS_PARAMS.h"
25 #include "PTRACERS_FIELDS.h"
26 #ifdef ALLOW_LONGSTEP
27 #include "LONGSTEP.h"
28 #endif
29
30 C !INPUT PARAMETERS:
31 _RL myTime
32 INTEGER myIter
33 INTEGER myThid
34 CEOP
35
36 #ifdef ALLOW_DIAGNOSTICS
37
38 C !LOCAL VARIABLES:
39 LOGICAL DIAGNOSTICS_IS_ON
40 EXTERNAL DIAGNOSTICS_IS_ON
41 _RL dummy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
42 INTEGER i,j,k,bi,bj,iTr
43 CHARACTER*8 diagName
44 INTEGER km1
45 INTEGER trIter
46
47 #ifdef ALLOW_LONGSTEP
48 C fill only once every long time step
49 C have to treat first time step by hand...
50 C trIter=0 when this routine is called the first time
51 IF ( staggerTimeStep ) THEN
52 trIter = myIter-1
53 ELSE
54 trIter = myIter
55 ENDIF
56 IF ( LS_doTimeStep .OR. trIter.EQ.nIter0 ) THEN
57 #else
58 IF ( .TRUE. ) THEN
59 #endif
60
61 diagName = ' '
62
63 DO iTr = 1,PTRACERS_numInUse
64
65 diagName = ' '
66 WRITE(diagName,'(A4,A2)') 'TRAC',PTRACERS_ioLabel(iTr)
67 CALL DIAGNOSTICS_FILL( pTracer(1-Olx,1-Oly,1,1,1,iTr), diagName,
68 & 0,Nr,0,1,1,myThid )
69
70 diagName = ' '
71 WRITE(diagName,'(A5,A2)') 'UTRAC',PTRACERS_ioLabel(iTr)
72 IF ( DIAGNOSTICS_IS_ON(diagName,myThid) ) THEN
73 DO bj = myByLo(myThid), myByHi(myThid)
74 DO bi = myBxLo(myThid), myBxHi(myThid)
75 DO k=1,Nr
76 DO j = 1,sNy
77 DO i = 1,sNx+1
78 #ifdef ALLOW_LONGSTEP
79 C at first timestep we don't have averaged velocities yet -
80 C use initial velocities instead
81 IF ( trIter.GT.nIter0 ) THEN
82 dummy(i,j,k,bi,bj) =
83 & LS_uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj) *
84 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
85 & + pTracer(i-1,j,k,bi,bj,iTr) )
86 ELSE
87 #else
88 IF (.TRUE.) THEN
89 #endif
90 dummy(i,j,k,bi,bj) =
91 & uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj) *
92 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
93 & + pTracer(i-1,j,k,bi,bj,iTr) )
94 ENDIF
95 ENDDO
96 ENDDO
97 ENDDO
98 ENDDO
99 ENDDO
100 CALL DIAGNOSTICS_FILL( dummy, diagName, 0,Nr,0,1,1,myThid )
101 ENDIF
102
103 diagName = ' '
104 WRITE(diagName,'(A5,A2)') 'VTRAC',PTRACERS_ioLabel(iTr)
105 IF ( DIAGNOSTICS_IS_ON(diagName,myThid) ) THEN
106 DO bj = myByLo(myThid), myByHi(myThid)
107 DO bi = myBxLo(myThid), myBxHi(myThid)
108 DO k=1,Nr
109 DO j = 1,sNy+1
110 DO i = 1,sNx
111 #ifdef ALLOW_LONGSTEP
112 C at first timestep we don't have averaged velocities yet -
113 C use initial velocities instead
114 IF ( trIter.GT.nIter0 ) THEN
115 dummy(i,j,k,bi,bj) =
116 & LS_vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj) *
117 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
118 & + pTracer(i,j-1,k,bi,bj,iTr) )
119 ELSE
120 #else
121 IF (.TRUE.) THEN
122 #endif
123 dummy(i,j,k,bi,bj) =
124 & vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj) *
125 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
126 & + pTracer(i,j-1,k,bi,bj,iTr) )
127 ENDIF
128 ENDDO
129 ENDDO
130 ENDDO
131 ENDDO
132 ENDDO
133 CALL DIAGNOSTICS_FILL( dummy, diagName, 0,Nr,0,1,1,myThid )
134 ENDIF
135
136 diagName = ' '
137 WRITE(diagName,'(A5,A2)') 'WTRAC',PTRACERS_ioLabel(iTr)
138 IF ( DIAGNOSTICS_IS_ON(diagName,myThid) ) THEN
139 DO bj = myByLo(myThid), myByHi(myThid)
140 DO bi = myBxLo(myThid), myBxHi(myThid)
141 DO k=1,Nr
142 km1 = MAX(k-1,1)
143 DO j = 1,sNy
144 DO i = 1,sNx
145 #ifdef ALLOW_LONGSTEP
146 C at first timestep we don't have averaged velocities yet -
147 C use initial velocities instead
148 IF ( trIter.GT.nIter0 ) THEN
149 dummy(i,j,k,bi,bj) = LS_wVel(i,j,k,bi,bj) *
150 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
151 & + pTracer(i,j,km1,bi,bj,iTr) )
152 ELSE
153 #else
154 IF (.TRUE.) THEN
155 #endif
156 dummy(i,j,k,bi,bj) = wVel(i,j,k,bi,bj) *
157 & 0.5 _d 0*( pTracer(i,j,k,bi,bj,iTr)
158 & + pTracer(i,j,km1,bi,bj,iTr) )
159 ENDIF
160 ENDDO
161 ENDDO
162 ENDDO
163 ENDDO
164 ENDDO
165 CALL DIAGNOSTICS_FILL( dummy, diagName, 0,Nr,0,1,1,myThid )
166 ENDIF
167
168 ENDDO
169
170 C LS_doTimeStep
171 ENDIF
172
173 #endif /* ALLOW_DIAGNOSTICS */
174
175 RETURN
176 END
177
178 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22