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

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

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


Revision 1.8 - (show annotations) (download)
Mon Apr 7 20:31:16 2008 UTC (16 years, 2 months ago) by dfer
Branch: MAIN
Changes since 1.7: +1 -4 lines
Moving dic options to DIC_OPTIONS.h

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

  ViewVC Help
Powered by ViewVC 1.1.22