/[MITgcm]/MITgcm_contrib/jscott/pkg_atm2d/tave_end_diags.F
ViewVC logotype

Annotation of /MITgcm_contrib/jscott/pkg_atm2d/tave_end_diags.F

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


Revision 1.2 - (hide annotations) (download)
Tue Aug 22 20:21:39 2006 UTC (19 years, 1 month ago) by jscott
Branch: MAIN
Changes since 1.1: +41 -14 lines
new revision of atm2d package

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    

  ViewVC Help
Powered by ViewVC 1.1.22