/[MITgcm]/MITgcm/pkg/aim_v23/aim_diagnostics.F
ViewVC logotype

Contents of /MITgcm/pkg/aim_v23/aim_diagnostics.F

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


Revision 1.1 - (show annotations) (download)
Fri Nov 22 17:17:03 2002 UTC (21 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint47a_post, checkpoint47b_post
new aim pkg: adapted from Franco Molteni SPEEDY code, ver23

1 C $Header: $
2 C $Name: $
3
4 #include "AIM_OPTIONS.h"
5
6 CStartOfInterFace
7 SUBROUTINE AIM_DIAGNOSTICS( bi,bj, myTime, myIter, myThid )
8 C *==========================================================*
9 C | SUBROUTINE AIM_DIAGNOSTICS
10 C | o Calculate AIM diagnostics
11 C *==========================================================*
12 IMPLICIT NONE
13
14 C === Global variables ===
15 C-- size for MITgcm & Physics package :
16 #include "AIM_SIZE.h"
17
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20
21 #include "AIM_DIAGS.h"
22 #include "com_physvar.h"
23
24 LOGICAL DIFFERENT_MULTIPLE
25 EXTERNAL DIFFERENT_MULTIPLE
26
27 C == Routine arguments ==
28 C bi,bj - Tile index
29 C myTime - Current time of simulation ( s )
30 C myIter - Current iteration number in simulation
31 C myThid - Number of this instance of the routine
32 INTEGER bi, bj, myIter, myThid
33 _RL myTime
34 CEndOfInterface
35
36 #ifdef ALLOW_AIM
37
38 C == Local variables ==
39 INTEGER I,J,I2,K
40 _RL DDTT
41 _RL aim_tendFreq, aim_diagFreq
42 CHARACTER*(MAX_LEN_MBUF) suff
43
44 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
45
46 aim_diagFreq = dumpFreq
47 aim_tendFreq = 0.
48
49 c aim_diagFreq = 0.
50 c aim_diagFreq = deltaTClock
51 c aim_tendFreq = deltaTClock
52
53 IF (
54 & DIFFERENT_MULTIPLE(aim_tendFreq,myTime+deltaTClock,myTime)
55 & ) THEN
56 WRITE(suff,'(I10.10)') myIter+1
57
58 C-- Write Tendencies to files :
59 CALL AIM_WRITE_LOCAL('aim_dT_RSW.',suff,Nr,TT_RSW(1,1,myThid),
60 & bi,bj,1,myIter,myThid)
61 CALL AIM_WRITE_LOCAL('aim_dT_RLW.',suff,Nr,TT_RLW(1,1,myThid),
62 & bi,bj,1,myIter,myThid)
63 CALL AIM_WRITE_LOCAL('aim_dT_CNV.',suff,Nr,TT_CNV(1,1,myThid),
64 & bi,bj,1,myIter,myThid)
65 CALL AIM_WRITE_LOCAL('aim_dT_PBL.',suff,Nr,TT_PBL(1,1,myThid),
66 & bi,bj,1,myIter,myThid)
67 CALL AIM_WRITE_LOCAL('aim_dT_LSC.',suff,Nr,TT_LSC(1,1,myThid),
68 & bi,bj,1,myIter,myThid)
69 CALL AIM_WRITE_LOCAL('aim_dQ_CNV.',suff,Nr,QT_CNV(1,1,myThid),
70 & bi,bj,1,myIter,myThid)
71 CALL AIM_WRITE_LOCAL('aim_dQ_PBL.',suff,Nr,QT_PBL(1,1,myThid),
72 & bi,bj,1,myIter,myThid)
73 CALL AIM_WRITE_LOCAL('aim_dQ_LSC.',suff,Nr,QT_LSC(1,1,myThid),
74 & bi,bj,1,myIter,myThid)
75 ENDIF
76
77 IF (
78 & DIFFERENT_MULTIPLE(aim_diagFreq,myTime+deltaTClock,myTime)
79 & ) THEN
80 WRITE(suff,'(I10.10)') myIter+1
81
82 C-- Write Relative Humidity :
83 CALL AIM_WRITE_LOCAL('aim_RelHum.',suff,Nr,RH(1,1,myThid),
84 & bi,bj,1,myIter,myThid)
85
86 C-- Write AIM Physics diagnostics (2D, all in 1 file) :
87 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,DRAG(1,3,myThid),
88 & bi,bj, 1,myIter,myThid)
89 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SPEED0(1,myThid),
90 & bi,bj, 2,myIter,myThid)
91 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,TSR(1,myThid),
92 & bi,bj, 3,myIter,myThid)
93 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,OLR(1,myThid),
94 & bi,bj, 4,myIter,myThid)
95 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SSR(1,myThid),
96 & bi,bj, 5,myIter,myThid)
97 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SLR(1,myThid),
98 & bi,bj, 6,myIter,myThid)
99 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SHF(1,3,myThid),
100 & bi,bj, 7,myIter,myThid)
101 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,EVAP(1,3,myThid),
102 & bi,bj, 8,myIter,myThid)
103 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,PRECNV(1,myThid),
104 & bi,bj, 9,myIter,myThid)
105 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,PRECLS(1,myThid),
106 & bi,bj,10,myIter,myThid)
107 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CLOUDC(1,myThid),
108 & bi,bj,11,myIter,myThid)
109 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CLTOP(1,myThid),
110 & bi,bj,12,myIter,myThid)
111 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CBMF(1,myThid),
112 & bi,bj,13,myIter,myThid)
113 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,T0(1,myThid),
114 & bi,bj,14,myIter,myThid)
115 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,Q0(1,myThid),
116 & bi,bj,15,myIter,myThid)
117 C--
118 ENDIF
119
120 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
121
122 #ifdef ALLOW_TIMEAVE
123
124 IF (taveFreq.GT.0.) THEN
125
126 DDTT = deltaTclock
127
128 DO J=1,sNy
129 DO I=1,sNx
130 I2 = I+(J-1)*sNx
131 TSRtave(i,j,bi,bj) = TSRtave(i,j,bi,bj)
132 & + TSR(I2,myThid)*DDTT
133 OLRtave(i,j,bi,bj) = OLRtave(i,j,bi,bj)
134 & + OLR(I2,myThid)*DDTT
135 SSRtave(i,j,bi,bj) = SSRtave(i,j,bi,bj)
136 & + SSR(I2,myThid)*DDTT
137 SLRtave(i,j,bi,bj) = SLRtave(i,j,bi,bj)
138 & + SLR(I2,myThid)*DDTT
139 SHFtave(i,j,bi,bj) = SHFtave(i,j,bi,bj)
140 & + SHF(I2,3,myThid)*DDTT
141 EVAPtave(i,j,bi,bj) = EVAPtave(i,j,bi,bj)
142 & + EVAP(I2,3,myThid)*DDTT
143 PRECNVtave(i,j,bi,bj) = PRECNVtave(i,j,bi,bj)
144 & + PRECNV(I2,myThid)*DDTT
145 PRECLStave(i,j,bi,bj) = PRECLStave(i,j,bi,bj)
146 & + PRECLS(I2,myThid)*DDTT
147 CLOUDCtave(i,j,bi,bj) = CLOUDCtave(i,j,bi,bj)
148 & + CLOUDC(I2,myThid)*DDTT
149 ENDDO
150 ENDDO
151
152 C- Keep record of how much time has been integrated over
153 DO K=1,Nr
154 AIM_TimeAve(k,bi,bj)=AIM_TimeAve(k,bi,bj)+DDTT
155 ENDDO
156
157 ENDIF
158
159 #endif /* ALLOW_TIMEAVE */
160
161 #endif /* ALLOW_AIM */
162
163 RETURN
164 END

  ViewVC Help
Powered by ViewVC 1.1.22