/[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.2 - (show annotations) (download)
Wed Jun 13 17:01:23 2007 UTC (17 years ago) by jscott
Branch: MAIN
CVS Tags: checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59h
Changes since 1.1: +4 -4 lines
fix format statement typo

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

  ViewVC Help
Powered by ViewVC 1.1.22