1 |
jscott |
1.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 | | |
8 |
|
|
c | | |
9 |
|
|
C *==========================================================* |
10 |
|
|
IMPLICIT NONE |
11 |
|
|
|
12 |
|
|
C === Global Atmosphere Variables === |
13 |
|
|
#include "ATMSIZE.h" |
14 |
|
|
#include "SIZE.h" |
15 |
|
|
#include "EEPARAMS.h" |
16 |
|
|
#include "PARAMS.h" |
17 |
|
|
#include "ATM2D_VARS.h" |
18 |
|
|
|
19 |
|
|
C !INPUT/OUTPUT PARAMETERS: |
20 |
|
|
C === Routine arguments === |
21 |
|
|
C monid - current month of the year |
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 |
jscott |
1.2 |
DATA secYr /31536000. _d 0/ |
36 |
jscott |
1.1 |
INTEGER i,j,mn,j_atm |
37 |
|
|
INTEGER simYr |
38 |
jscott |
1.2 |
INTEGER dUnit |
39 |
jscott |
1.1 |
_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 |
jscott |
1.2 |
_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 |
jscott |
1.1 |
|
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 |
jscott |
1.2 |
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 |
jscott |
1.1 |
|
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 |
jscott |
1.2 |
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 |
jscott |
1.1 |
|
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 |
jscott |
1.2 |
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 |
jscott |
1.1 |
|
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 |
jscott |
1.2 |
CALL MDSFINDUNIT( dUnit, mythid ) |
170 |
|
|
|
171 |
jscott |
1.1 |
WRITE(fn,'(A,I5.5') 'attauu.', simYr |
172 |
jscott |
1.2 |
OPEN(dUnit, FILE=fn, STATUS='unknown', |
173 |
jscott |
1.1 |
& ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted') |
174 |
jscott |
1.2 |
WRITE(dUnit,REC=1) sum_tauu_ta |
175 |
|
|
CLOSE(dUnit) |
176 |
jscott |
1.1 |
|
177 |
|
|
WRITE(fn,'(A,I5.5') 'attauv.', simYr |
178 |
jscott |
1.2 |
OPEN(dUnit, FILE=fn, STATUS='unknown', |
179 |
jscott |
1.1 |
& ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted') |
180 |
jscott |
1.2 |
WRITE(dUnit,REC=1) sum_tauv_ta |
181 |
|
|
CLOSE(dUnit) |
182 |
jscott |
1.1 |
|
183 |
|
|
WRITE(fn,'(A,I5.5') 'atwind.', simYr |
184 |
jscott |
1.2 |
OPEN(dUnit, FILE=fn, STATUS='unknown', |
185 |
jscott |
1.1 |
& ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted') |
186 |
jscott |
1.2 |
WRITE(dUnit,REC=1) sum_wsocean_ta |
187 |
|
|
CLOSE(dUnit) |
188 |
jscott |
1.1 |
|
189 |
|
|
WRITE(fn,'(A,I5.5') 'atps4ocn.', simYr |
190 |
jscott |
1.2 |
OPEN(dUnit, FILE=fn, STATUS='unknown', |
191 |
jscott |
1.1 |
& ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted') |
192 |
jscott |
1.2 |
WRITE(dUnit,REC=1) sum_ps4ocean_ta |
193 |
|
|
CLOSE(dUnit) |
194 |
jscott |
1.1 |
|
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 |
|
|
|