/[MITgcm]/MITgcm/pkg/dic/dic_aver_init.F
ViewVC logotype

Annotation of /MITgcm/pkg/dic/dic_aver_init.F

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


Revision 1.2 - (hide annotations) (download)
Tue Jul 13 18:03:31 2004 UTC (19 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint55c_post, checkpoint57b_post, checkpoint55d_pre, checkpoint57d_post, checkpoint57c_pre, checkpoint55j_post, checkpoint56b_post, checkpoint55h_post, checkpoint57e_post, checkpoint54d_post, checkpoint56c_post, checkpoint54e_post, checkpoint55b_post, checkpoint55, checkpoint57f_pre, checkpoint57a_post, checkpoint54f_post, checkpoint55g_post, checkpoint55f_post, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, eckpoint57e_pre, checkpoint57c_post, checkpoint55e_post, checkpoint55a_post, checkpoint54c_post, checkpoint56a_post, checkpoint55d_post
Changes since 1.1: +4 -0 lines
max number of passive tracers is now defined in PTRACERS_SIZE.h

1 jmc 1.2 C $Header: $
2     C $Name: $
3    
4 stephd 1.1 cswdcost -- add sunroutine ---
5     #include "CPP_OPTIONS.h"
6     #include "GCHEM_OPTIONS.h"
7    
8    
9     CStartOfInterFace
10     SUBROUTINE DIC_AVER_INIT(
11     I myThid)
12    
13     C /==========================================================\
14     C | SUBROUTINE DIC_AVER_INIT i |
15     C |==========================================================|
16     IMPLICIT NONE
17    
18     C == GLobal variables ==
19     #include "SIZE.h"
20     #include "DYNVARS.h"
21     #include "EEPARAMS.h"
22     #include "PARAMS.h"
23     #include "GRID.h"
24 jmc 1.2 #include "PTRACERS_SIZE.h"
25 stephd 1.1 #include "PTRACERS.h"
26     #include "GCHEM.h"
27     #include "DIC_ABIOTIC.h"
28     #ifdef DIC_BIOTIC
29     #include "DIC_BIOTIC.h"
30     #include "DIC_DIAGS.h"
31     #include "DIC_COST.h"
32     #endif
33     #ifdef ALLOW_SEAICE
34     #include "ICE.h"
35     #endif
36    
37     C == Routine arguments ==
38     INTEGER myThid
39    
40     #ifdef ALLOW_DIC_COST
41    
42     C == Local variables ==
43     LOGICAL DIFFERENT_MULTIPLE
44     EXTERNAL DIFFERENT_MULTIPLE
45     INTEGER i, j, bi, bj, k, it
46     _RL po4av(nR)
47     _RL o2av(nR)
48     _RL volvar(nR)
49     cswdmonth -add-
50     _RL po4avm(12,4)
51     _RL o2avm(12,4)
52     _RL rdt
53     INTEGER nForcingPeriods,Imytm,Ifprd,Ifcyc,Iftm
54    
55     cswddmonth -- end-
56     c
57     c initialize to zero
58     totcost=0.d0
59     DO bj = myByLo(myThid), myByHi(myThid)
60     DO bi = myBxLo(myThid), myBxHi(myThid)
61     CALL TIMEAVE_RESET(PO4obs, Nr, bi, bj, myThid)
62     CALL TIMEAVE_RESET(O2obs, Nr, bi, bj, myThid)
63     cswdmonth
64     CALL TIMEAVE_RESET(PO4obsl1, Nr, bi, bj, myThid)
65     CALL TIMEAVE_RESET(PO4obsl2, Nr, bi, bj, myThid)
66     CALL TIMEAVE_RESET(PO4obsl3, Nr, bi, bj, myThid)
67     cQQ CALL TIMEAVE_RESET(PO4obsl4, Nr, bi, bj, myThid)
68     CALL TIMEAVE_RESET(O2obsl1, Nr, bi, bj, myThid)
69     CALL TIMEAVE_RESET(O2obsl2, Nr, bi, bj, myThid)
70     CALL TIMEAVE_RESET(O2obsl3, Nr, bi, bj, myThid)
71     cQQ CALL TIMEAVE_RESET(O2obsl4, Nr, bi, bj, myThid)
72     cswdmonth -end-
73     do k=1,Nr
74     OBS_Timetave(bi,bj,k)=0.d0
75     po4av(k)=0.d0
76     o2av(k)=0.d0
77     po4var(k)=0.d0
78     o2var(k)=0.d0
79     volvar(k)=0.d0
80     enddo
81     cswdmonth
82     do k=1,3
83     do it=1,12
84     OBSM_Timetave(bi,bj,it)=0.d0
85     po4avm(it,k)=0.d0
86     o2avm(it,k)=0.d0
87     po4varm(it,k)=0.d0
88     o2varm(it,k)=0.d0
89     enddo
90     enddo
91     ENDDO
92     ENDDO
93     _BEGIN_MASTER( myThid )
94     CALL READ_FLD_XYZ_RL( 'input/po4obs.bin', ' ',
95     & po4obs, 0, myThid )
96     CALL READ_FLD_XYZ_RL( 'input/o2obs.bin', ' ',
97     & o2obs, 0, myThid )
98     cswdmonth
99     CALL READ_FLD_XYZ_RL( 'input/po4lev1.bin', ' ',
100     & po4obsl1, 0, myThid )
101     CALL READ_FLD_XYZ_RL( 'input/po4lev2.bin', ' ',
102     & po4obsl2, 0, myThid )
103     CALL READ_FLD_XYZ_RL( 'input/po4lev3.bin', ' ',
104     & po4obsl3, 0, myThid )
105     cQQ CALL READ_FLD_XYZ_RL( 'input/po4lev4.bin', ' ',
106     cQQ & po4obsl4, 0, myThid )
107     CALL READ_FLD_XYZ_RL( 'input/o2lev1.bin', ' ',
108     & o2obsl1, 0, myThid )
109     CALL READ_FLD_XYZ_RL( 'input/o2lev2.bin', ' ',
110     & o2obsl2, 0, myThid )
111     CALL READ_FLD_XYZ_RL( 'input/o2lev3.bin', ' ',
112     & o2obsl3, 0, myThid )
113     cQQ CALL READ_FLD_XYZ_RL( 'input/o2lev4.bin', ' ',
114     cQQ & o2obsl4, 0, myThid )
115     cswdmonth -end-
116     _END_MASTER(myThid)
117     _EXCH_XYZ_R8(po4obs , myThid )
118     _EXCH_XYZ_R8(o2obs , myThid )
119     cswdmonth -add-
120     _EXCH_XYZ_R8(po4obsl1 , myThid )
121     _EXCH_XYZ_R8(po4obsl2 , myThid )
122     _EXCH_XYZ_R8(po4obsl3 , myThid )
123     cQQ _EXCH_XYZ_R8(po4obsl4 , myThid )
124     _EXCH_XYZ_R8(o2obsl1 , myThid )
125     _EXCH_XYZ_R8(o2obsl2 , myThid )
126     _EXCH_XYZ_R8(o2obsl3 , myThid )
127     cQQ _EXCH_XYZ_R8(o2obsl4 , myThid )
128     cswdmonth -end-
129    
130     _BARRIER
131     c calculate layer means
132     _BEGIN_MASTER( mythid )
133     do k=1,Nr
134     call tracer_meanarea(myThid,po4obs, k,
135     & po4av(k))
136     call tracer_meanarea(myThid,o2obs, k,
137     & o2av(k))
138     c print*,po4av(k), o2av(k)
139     enddo
140     cswdmonth -add-
141     do it=1,12
142     call tracer_meanarea(myThid,po4obsl1,it,
143     & po4avm(it,1))
144     call tracer_meanarea(myThid,po4obsl2,it,
145     & po4avm(it,2))
146     call tracer_meanarea(myThid,po4obsl3,it,
147     & po4avm(it,3))
148     cQQ call tracer_meanarea(myThid,po4obsl4,it,
149     cQQ & po4avm(it,4))
150     call tracer_meanarea(myThid,o2obsl1,it,
151     & o2avm(it,1))
152     call tracer_meanarea(myThid,o2obsl2,it,
153     & o2avm(it,2))
154     call tracer_meanarea(myThid,o2obsl3,it,
155     & o2avm(it,3))
156     cQQ call tracer_meanarea(myThid,o2obsl4,it,
157     cQQ & o2avm(it,4))
158    
159     enddo
160     _END_MASTER(myThid)
161     c calculate layer variance
162     _BEGIN_MASTER( mythid )
163     DO bj = myByLo(myThid), myByHi(myThid)
164     DO bi = myBxLo(myThid), myBxHi(myThid)
165     DO j=1-OLy,sNy+OLy
166     DO i=1-OLx,sNx+OLx
167     DO k=1,Nr
168     volvar(k)=volvar(k)+
169     & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
170     po4var(k)=po4var(k)+(po4obs(i,j,k,bi,bj)-po4av(k))**2
171     & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
172     o2var(k)=o2var(k)+(o2obs(i,j,k,bi,bj)-o2av(k))**2
173     & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
174     ENDDO
175     cswdmonth -add-
176     DO it=1,12
177     po4varm(it,1)=po4varm(it,1)+
178     & (po4obsl1(i,j,it,bi,bj)-po4avm(it,1))**2
179     & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj)
180     po4varm(it,2)=po4varm(it,2)+
181     & (po4obsl2(i,j,it,bi,bj)-po4avm(it,2))**2
182     & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj)
183     po4varm(it,3)=po4varm(it,3)+
184     & (po4obsl3(i,j,it,bi,bj)-po4avm(it,3))**2
185     & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
186     cQQ po4varm(it,4)=po4varm(it,4)+
187     cQQ & (po4obsl4(i,j,it,bi,bj)-po4avm(it,4))**2
188     cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
189     o2varm(it,1)=o2varm(it,1)+
190     & (o2obsl1(i,j,it,bi,bj)-o2avm(it,1))**2
191     & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj)
192     o2varm(it,2)=o2varm(it,2)+
193     & (o2obsl2(i,j,it,bi,bj)-o2avm(it,2))**2
194     & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj)
195     o2varm(it,3)=o2varm(it,3)+
196     & (o2obsl3(i,j,it,bi,bj)-o2avm(it,3))**2
197     & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
198     cQQ o2varm(it,4)=o2varm(it,4)+
199     cQQ & (o2obsl4(i,j,it,bi,bj)-o2avm(it,4))**2
200     cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
201    
202     ENDDO
203     ENDDO
204     ENDDO
205     ENDDO
206     ENDDO
207     DO k=1,Nr
208     po4var(k)=po4var(k)/volvar(k)
209     o2var(k)=o2var(k)/volvar(k)
210     cQQ print*,po4var(k),o2var(k)
211     ENDDO
212     cswdmonth- add-
213     DO k=1,3
214     Do it=1,12
215     po4varm(it,k)=po4varm(it,k)/volvar(k)
216     o2varm(it,k)=o2varm(it,k)/volvar(k)
217     ENDDO
218     ENDDO
219     cswdmonth -end-
220     _END_MASTER(myThid)
221     C
222     C Reset averages to zero
223     print*,'QQ dic_diags, set to zero, gchem_init'
224     DO bj = myByLo(myThid), myByHi(myThid)
225     DO bi = myBxLo(myThid), myBxHi(myThid)
226     CALL TIMEAVE_RESET(PO4ann,Nr,bi,bj,myThid)
227     CALL TIMEAVE_RESET(O2ann,Nr,bi,bj,myThid)
228     CALL TIMEAVE_RESET(PO4lev1, 12, bi, bj, myThid)
229     CALL TIMEAVE_RESET(PO4lev2, 12, bi, bj, myThid)
230     CALL TIMEAVE_RESET(PO4lev3, 12, bi, bj, myThid)
231     cQQ CALL TIMEAVE_RESET(PO4lev4, 12, bi, bj, myThid)
232     CALL TIMEAVE_RESET(O2lev1, 12, bi, bj, myThid)
233     CALL TIMEAVE_RESET(O2lev2, 12, bi, bj, myThid)
234     CALL TIMEAVE_RESET(O2lev3, 12, bi, bj, myThid)
235     cQQ CALL TIMEAVE_RESET(O2lev4, 12, bi, bj, myThid)
236    
237     do k=1,Nr
238     OBS_Timetave(bi,bj,k)=0.d0
239     enddo
240     do it=1,12
241     OBSM_Timetave(bi,bj,it)=0.d0
242     enddo
243     ENDDO
244     ENDDO
245     c
246     #endif
247     c
248     RETURN
249     END
250     cswd -- end added subroutine --

  ViewVC Help
Powered by ViewVC 1.1.22