/[MITgcm]/MITgcm/pkg/atm2d/tave_end_diags.F
ViewVC logotype

Contents of /MITgcm/pkg/atm2d/tave_end_diags.F

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


Revision 1.3 - (show annotations) (download)
Mon Oct 8 23:48:28 2007 UTC (16 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59k, checkpoint59j, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, HEAD
Changes since 1.2: +24 -21 lines
add missing cvs $Header:$ or $Name:$

1 C $Header: $
2 C $Name: $
3
4 #include "ctrparam.h"
5 #include "ATM2D_OPTIONS.h"
6
7 C !INTERFACE:
8 SUBROUTINE TAVE_END_DIAGS( nYears, myTime, myIter, myThid )
9 C *==========================================================*
10 C | Calculate and dump all diagnostics at tave periods. |
11 C *==========================================================*
12 IMPLICIT NONE
13
14 C === Global Atmosphere Variables ===
15 #include "ATMSIZE.h"
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "ATM2D_VARS.h"
20
21 C !INPUT/OUTPUT PARAMETERS:
22 C === Routine arguments ===
23 C nYears - number of years in this dump (maybe be different from
24 C tave if starting time not divisible by tave)
25 C myTime - current simulation time (ocean model time)
26 C myIter - iteration number (ocean model)
27 C myThid - Thread no. that called this routine.
28 INTEGER nYears
29 _RL myTime
30 INTEGER myIter
31 INTEGER myThid
32
33 C LOCAL VARIABLES:
34 CHARACTER*(MAX_LEN_MBUF) suff, fn
35 INTEGER ndmonth(12)
36 DATA ndmonth/31,28,31,30,31,30,31,31,30,31,30,31/
37 _RL secYr
38 DATA secYr /31536000. _d 0/
39 INTEGER i,j,mn,j_atm
40 INTEGER simYr
41 INTEGER dUnit
42 _RS norm_factor
43 _RL qnet_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44 _RL evap_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45 _RL precip_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46 _RL runoff_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47 _RL qrel_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48 _RL frel_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49 _RL qnet_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50 _RL evap_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51 _RL precip_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52 _RL runoff_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
53 _RL qrel_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54 _RL frel_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
55 _RL iceMask_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
56 _RL iceHeight_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
57 _RL iceTime_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
58 _RL oceMxLT_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
59 _RL oceMxLS_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
60
61
62 DO j=1,sNy
63 DO i=1,sNx
64
65 qnet_ann(i,j) = 0. _d 0
66 evap_ann(i,j) = 0. _d 0
67 precip_ann(i,j) = 0. _d 0
68 runoff_ann(i,j) = 0. _d 0
69 qrel_ann(i,j) = 0. _d 0
70 frel_ann(i,j) = 0. _d 0
71
72 ENDDO
73 ENDDO
74
75 DO mn=1,nForcingPer
76
77 norm_factor=nYears*ndmonth(mn)*86400.0
78 DO j=1,sNy
79 DO i=1,sNx
80
81 qnet_mon(i,j)= qnet_atm_ta(i,j,mn)/norm_factor
82 evap_mon(i,j)= evap_atm_ta(i,j,mn)/norm_factor
83 precip_mon(i,j)= precip_atm_ta(i,j,mn)/norm_factor
84 runoff_mon(i,j)= runoff_atm_ta(i,j,mn)/norm_factor
85 qrel_mon(i,j)= sum_qrel_ta(i,j,mn)/norm_factor
86 frel_mon(i,j)= sum_frel_ta(i,j,mn)/norm_factor
87 iceMask_mon(i,j)= sum_iceMask_ta(i,j,mn)/norm_factor
88 iceHeight_mon(i,j)= sum_iceHeight_ta(i,j,mn)/norm_factor
89 iceTime_mon(i,j)= sum_iceTime_ta(i,j,mn)/norm_factor
90 oceMxLT_mon(i,j)= sum_oceMxLT_ta(i,j,mn)/norm_factor
91 oceMxLS_mon(i,j)= sum_oceMxLS_ta(i,j,mn)/norm_factor
92
93 qnet_ann(i,j) = qnet_ann(i,j) +
94 & qnet_mon(i,j)*ndmonth(mn)/365.0
95 evap_ann(i,j) = evap_ann(i,j) +
96 & evap_mon(i,j)*ndmonth(mn)/365.0
97 precip_ann(i,j) = precip_ann(i,j) +
98 & precip_mon(i,j)*ndmonth(mn)/365.0
99 runoff_ann(i,j) = runoff_ann(i,j) +
100 & runoff_mon(i,j)*ndmonth(mn)/365.0
101 qrel_ann(i,j) = qrel_ann(i,j) +
102 & qrel_mon(i,j)*ndmonth(mn)/365.0
103 frel_ann(i,j) = frel_ann(i,j) +
104 & frel_mon(i,j)*ndmonth(mn)/365.0
105
106 qnet_atm_ta(i,j,mn)= 0. _d 0
107 evap_atm_ta(i,j,mn)= 0. _d 0
108 precip_atm_ta(i,j,mn)= 0. _d 0
109 runoff_atm_ta(i,j,mn)= 0. _d 0
110 sum_qrel_ta(i,j,mn)= 0. _d 0
111 sum_frel_ta(i,j,mn)= 0. _d 0
112 sum_iceMask_ta(i,j,mn)= 0. _d 0
113 sum_iceHeight_ta(i,j,mn)= 0. _d 0
114 sum_iceTime_ta(i,j,mn)= 0. _d 0
115 sum_oceMxLT_ta(i,j,mn)= 0. _d 0
116 sum_oceMxLS_ta(i,j,mn)= 0. _d 0
117
118 ENDDO
119 ENDDO
120
121 DO j_atm=1,jm0
122 sum_tauu_ta(j_atm,mn) = sum_tauu_ta(j_atm,mn) / norm_factor
123 sum_tauv_ta(j_atm,mn) = sum_tauv_ta(j_atm,mn) / norm_factor
124 sum_wsocean_ta(j_atm,mn) = sum_wsocean_ta(j_atm,mn) /
125 & norm_factor
126 sum_ps4ocean_ta(j_atm,mn) = sum_ps4ocean_ta(j_atm,mn) /
127 & norm_factor
128 ENDDO
129
130 WRITE(suff,'(I2.2)') mn
131 CALL WRITE_FLD_XY_RL('amQnetAtmtave.', suff,
132 & qnet_mon, myIter, myThid)
133 CALL WRITE_FLD_XY_RL('amEvapAtmtave.', suff,
134 & evap_mon, myIter, myThid)
135 CALL WRITE_FLD_XY_RL('amPrecipAtmtave.', suff,
136 & precip_mon, myIter, myThid)
137 CALL WRITE_FLD_XY_RL('amRunoffAtmtave.', suff,
138 & runoff_mon, myIter, myThid)
139 CALL WRITE_FLD_XY_RL('amQrelfluxtave.', suff,
140 & qrel_mon, myIter, myThid)
141 CALL WRITE_FLD_XY_RL('amFrelfluxtave.', suff,
142 & frel_mon, myIter, myThid)
143 CALL WRITE_FLD_XY_RL('amIceMasktave.', suff,
144 & iceMask_mon, myIter, myThid)
145 CALL WRITE_FLD_XY_RL('amIceHeighttave.', suff,
146 & iceHeight_mon, myIter, myThid)
147 CALL WRITE_FLD_XY_RL('amIceTimetave.', suff,
148 & iceTime_mon, myIter, myThid)
149 CALL WRITE_FLD_XY_RL('amOceMxLTtave.', suff,
150 & oceMxLT_mon, myIter, myThid)
151 CALL WRITE_FLD_XY_RL('amOceMxLStave.', suff,
152 & oceMxLS_mon, myIter, myThid)
153
154 ENDDO
155
156 WRITE(suff,'(I10.10)') myIter
157 CALL WRITE_FLD_XY_RL('QnetAtmtave.', suff,
158 & qnet_ann, myIter, myThid)
159 CALL WRITE_FLD_XY_RL('EvapAtmtave.', suff,
160 & evap_ann, myIter, myThid)
161 CALL WRITE_FLD_XY_RL('PrecipAtmtave.', suff,
162 & precip_ann, myIter, myThid)
163 CALL WRITE_FLD_XY_RL('RunoffAtmtave.', suff,
164 & runoff_ann, myIter, myThid)
165 CALL WRITE_FLD_XY_RL('Qrelfluxtave.', suff,
166 & qrel_ann, myIter, myThid)
167 CALL WRITE_FLD_XY_RL('Frelfluxtave.', suff,
168 & frel_ann, myIter, myThid)
169
170
171 simYr = int(myIter*deltaTClock/secYr)
172 CALL MDSFINDUNIT( dUnit, mythid )
173
174 WRITE(fn,'(A,I5.5)') 'attauu.', simYr
175 OPEN(dUnit, FILE=fn, STATUS='unknown',
176 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
177 WRITE(dUnit,REC=1) sum_tauu_ta
178 CLOSE(dUnit)
179
180 WRITE(fn,'(A,I5.5)') 'attauv.', simYr
181 OPEN(dUnit, FILE=fn, STATUS='unknown',
182 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
183 WRITE(dUnit,REC=1) sum_tauv_ta
184 CLOSE(dUnit)
185
186 WRITE(fn,'(A,I5.5)') 'atwind.', simYr
187 OPEN(dUnit, FILE=fn, STATUS='unknown',
188 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
189 WRITE(dUnit,REC=1) sum_wsocean_ta
190 CLOSE(dUnit)
191
192 WRITE(fn,'(A,I5.5)') 'atps4ocn.', simYr
193 OPEN(dUnit, FILE=fn, STATUS='unknown',
194 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
195 WRITE(dUnit,REC=1) sum_ps4ocean_ta
196 CLOSE(dUnit)
197
198 DO mn=1,nForcingPer
199 DO j_atm=1,jm0
200 sum_tauu_ta(j_atm,mn) = 0. _d 0
201 sum_tauv_ta(j_atm,mn) = 0. _d 0
202 sum_wsocean_ta(j_atm,mn) = 0. _d 0
203 sum_ps4ocean_ta(j_atm,mn) = 0. _d 0
204 ENDDO
205 ENDDO
206
207 RETURN
208 END
209

  ViewVC Help
Powered by ViewVC 1.1.22