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

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

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


Revision 1.3 - (hide annotations) (download)
Mon Oct 8 23:48:28 2007 UTC (16 years, 7 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 jmc 1.3 C $Header: $
2     C $Name: $
3    
4 jscott 1.1 #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 jmc 1.3 DATA secYr /31536000. _d 0/
39 jscott 1.1 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 jmc 1.3 qnet_ann(i,j) = qnet_ann(i,j) +
94 jscott 1.1 & qnet_mon(i,j)*ndmonth(mn)/365.0
95 jmc 1.3 evap_ann(i,j) = evap_ann(i,j) +
96 jscott 1.1 & evap_mon(i,j)*ndmonth(mn)/365.0
97 jmc 1.3 precip_ann(i,j) = precip_ann(i,j) +
98 jscott 1.1 & precip_mon(i,j)*ndmonth(mn)/365.0
99 jmc 1.3 runoff_ann(i,j) = runoff_ann(i,j) +
100 jscott 1.1 & runoff_mon(i,j)*ndmonth(mn)/365.0
101 jmc 1.3 qrel_ann(i,j) = qrel_ann(i,j) +
102 jscott 1.1 & qrel_mon(i,j)*ndmonth(mn)/365.0
103 jmc 1.3 frel_ann(i,j) = frel_ann(i,j) +
104 jscott 1.1 & 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 jmc 1.3 runoff_atm_ta(i,j,mn)= 0. _d 0
110 jscott 1.1 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 jmc 1.3 sum_ps4ocean_ta(j_atm,mn) = sum_ps4ocean_ta(j_atm,mn) /
127 jscott 1.1 & norm_factor
128     ENDDO
129    
130     WRITE(suff,'(I2.2)') mn
131 jmc 1.3 CALL WRITE_FLD_XY_RL('amQnetAtmtave.', suff,
132 jscott 1.1 & qnet_mon, myIter, myThid)
133 jmc 1.3 CALL WRITE_FLD_XY_RL('amEvapAtmtave.', suff,
134 jscott 1.1 & evap_mon, myIter, myThid)
135 jmc 1.3 CALL WRITE_FLD_XY_RL('amPrecipAtmtave.', suff,
136 jscott 1.1 & precip_mon, myIter, myThid)
137 jmc 1.3 CALL WRITE_FLD_XY_RL('amRunoffAtmtave.', suff,
138 jscott 1.1 & runoff_mon, myIter, myThid)
139 jmc 1.3 CALL WRITE_FLD_XY_RL('amQrelfluxtave.', suff,
140 jscott 1.1 & qrel_mon, myIter, myThid)
141 jmc 1.3 CALL WRITE_FLD_XY_RL('amFrelfluxtave.', suff,
142 jscott 1.1 & frel_mon, myIter, myThid)
143 jmc 1.3 CALL WRITE_FLD_XY_RL('amIceMasktave.', suff,
144 jscott 1.1 & iceMask_mon, myIter, myThid)
145 jmc 1.3 CALL WRITE_FLD_XY_RL('amIceHeighttave.', suff,
146 jscott 1.1 & iceHeight_mon, myIter, myThid)
147 jmc 1.3 CALL WRITE_FLD_XY_RL('amIceTimetave.', suff,
148 jscott 1.1 & iceTime_mon, myIter, myThid)
149 jmc 1.3 CALL WRITE_FLD_XY_RL('amOceMxLTtave.', suff,
150 jscott 1.1 & oceMxLT_mon, myIter, myThid)
151 jmc 1.3 CALL WRITE_FLD_XY_RL('amOceMxLStave.', suff,
152 jscott 1.1 & 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 jmc 1.3
174 jscott 1.2 WRITE(fn,'(A,I5.5)') 'attauu.', simYr
175 jscott 1.1 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 jscott 1.2 WRITE(fn,'(A,I5.5)') 'attauv.', simYr
181 jscott 1.1 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 jscott 1.2 WRITE(fn,'(A,I5.5)') 'atwind.', simYr
187 jscott 1.1 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 jscott 1.2 WRITE(fn,'(A,I5.5)') 'atps4ocn.', simYr
193 jscott 1.1 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