/[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.13 - (show annotations) (download)
Sat Jan 2 23:07:39 2010 UTC (14 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64p, 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, checkpoint63, 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
Changes since 1.12: +39 -42 lines
- remove tab in source code
- time-ave: fix (simpler, no level index) cumulative-time counter: OBS_timetave
- to do: fix monthly cumulative-time counter "obsm_timetave"

1 C $Header: /u/gcmpack/MITgcm/pkg/dic/dic_aver_init.F,v 1.12 2009/10/14 20:12:30 heimbach 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
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_FIELDS.h"
23 #include "DIC_VARS.h"
24 #ifdef DIC_BIOTIC
25 #include "DIC_DIAGS.h"
26 #include "DIC_COST.h"
27 #endif
28
29 C == Routine arguments ==
30 INTEGER myThid
31
32 #ifdef ALLOW_DIC_COST
33 #ifdef ALLOW_TIMEAVE
34
35 C == Local variables ==
36 INTEGER i, j, bi, bj, k, it
37 _RL po4av(Nr)
38 _RL o2av(Nr)
39 _RL volvar(Nr)
40 Cswdmonth -add-
41 _RL po4avm(12,4)
42 _RL o2avm(12,4)
43 Cswddmonth -- end-
44
45 C initialize to zero
46 cph totcost=0. _d 0
47 DO bj = myByLo(myThid), myByHi(myThid)
48 DO bi = myBxLo(myThid), myBxHi(myThid)
49 CALL TIMEAVE_RESET(PO4obs, Nr, bi, bj, myThid)
50 CALL TIMEAVE_RESET(O2obs, Nr, bi, bj, myThid)
51 Cswdmonth
52 CALL TIMEAVE_RESET(PO4obsl1, Nr, bi, bj, myThid)
53 CALL TIMEAVE_RESET(PO4obsl2, Nr, bi, bj, myThid)
54 CALL TIMEAVE_RESET(PO4obsl3, Nr, bi, bj, myThid)
55 cQQ CALL TIMEAVE_RESET(PO4obsl4, Nr, bi, bj, myThid)
56 CALL TIMEAVE_RESET(O2obsl1, Nr, bi, bj, myThid)
57 CALL TIMEAVE_RESET(O2obsl2, Nr, bi, bj, myThid)
58 CALL TIMEAVE_RESET(O2obsl3, Nr, bi, bj, myThid)
59 cQQ CALL TIMEAVE_RESET(O2obsl4, Nr, bi, bj, myThid)
60 Cswdmonth -end-
61 OBS_timetave(bi,bj) = 0. _d 0
62 do k=1,Nr
63 po4av(k) = 0. _d 0
64 o2av(k) = 0. _d 0
65 po4var(k) = 0. _d 0
66 o2var(k) = 0. _d 0
67 volvar(k) = 0. _d 0
68 enddo
69 Cswdmonth
70 do k=1,3
71 do it=1,12
72 OBSM_Timetave(it,bi,bj) = 0. _d 0
73 po4avm(it,k) = 0. _d 0
74 o2avm(it,k) = 0. _d 0
75 po4varm(it,k)= 0. _d 0
76 o2varm(it,k) = 0. _d 0
77 enddo
78 enddo
79 ENDDO
80 ENDDO
81 CALL READ_FLD_XYZ_RL( 'input/po4obs.bin', ' ',
82 & po4obs, 0, myThid )
83 CALL READ_FLD_XYZ_RL( 'input/o2obs.bin', ' ',
84 & o2obs, 0, myThid )
85 Cswdmonth
86 CALL READ_FLD_XYZ_RL( 'input/po4lev1.bin', ' ',
87 & po4obsl1, 0, myThid )
88 CALL READ_FLD_XYZ_RL( 'input/po4lev2.bin', ' ',
89 & po4obsl2, 0, myThid )
90 CALL READ_FLD_XYZ_RL( 'input/po4lev3.bin', ' ',
91 & po4obsl3, 0, myThid )
92 cQQ CALL READ_FLD_XYZ_RL( 'input/po4lev4.bin', ' ',
93 cQQ & po4obsl4, 0, myThid )
94 CALL READ_FLD_XYZ_RL( 'input/o2lev1.bin', ' ',
95 & o2obsl1, 0, myThid )
96 CALL READ_FLD_XYZ_RL( 'input/o2lev2.bin', ' ',
97 & o2obsl2, 0, myThid )
98 CALL READ_FLD_XYZ_RL( 'input/o2lev3.bin', ' ',
99 & o2obsl3, 0, myThid )
100 cQQ CALL READ_FLD_XYZ_RL( 'input/o2lev4.bin', ' ',
101 cQQ & o2obsl4, 0, myThid )
102 Cswdmonth -end-
103 _EXCH_XYZ_RL(po4obs , myThid )
104 _EXCH_XYZ_RL(o2obs , myThid )
105 Cswdmonth -add-
106 _EXCH_XYZ_RL(po4obsl1 , myThid )
107 _EXCH_XYZ_RL(po4obsl2 , myThid )
108 _EXCH_XYZ_RL(po4obsl3 , myThid )
109 cQQ _EXCH_XYZ_RL(po4obsl4 , myThid )
110 _EXCH_XYZ_RL(o2obsl1 , myThid )
111 _EXCH_XYZ_RL(o2obsl2 , myThid )
112 _EXCH_XYZ_RL(o2obsl3 , myThid )
113 cQQ _EXCH_XYZ_RL(o2obsl4 , myThid )
114 Cswdmonth -end-
115
116 C calculate layer means
117 do k=1,Nr
118 call tracer_meanarea(po4obs, k,
119 & po4av(k),myThid)
120 call tracer_meanarea(o2obs, k,
121 & o2av(k),myThid)
122 c print*,po4av(k), o2av(k)
123 enddo
124 Cswdmonth -add-
125 do it=1,MIN(12,Nr)
126 call tracer_meanarea(po4obsl1,it,
127 & po4avm(it,1),myThid)
128 call tracer_meanarea(po4obsl2,it,
129 & po4avm(it,2),myThid)
130 call tracer_meanarea(po4obsl3,it,
131 & po4avm(it,3),myThid)
132 cQQ call tracer_meanarea(po4obsl4,it,
133 cQQ & po4avm(it,4),myThid)
134 call tracer_meanarea(o2obsl1,it,
135 & o2avm(it,1),myThid)
136 call tracer_meanarea(o2obsl2,it,
137 & o2avm(it,2),myThid)
138 call tracer_meanarea(o2obsl3,it,
139 & o2avm(it,3),myThid)
140 cQQ call tracer_meanarea(o2obsl4,it,
141 cQQ & o2avm(it,4),myThid)
142
143 enddo
144 c calculate layer variance
145 DO bj = myByLo(myThid), myByHi(myThid)
146 DO bi = myBxLo(myThid), myBxHi(myThid)
147 DO j=1,sNy
148 DO i=1,sNx
149 DO k=1,Nr
150 volvar(k)=volvar(k)+
151 & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
152 po4var(k)=po4var(k)+(po4obs(i,j,k,bi,bj)-po4av(k))**2
153 & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
154 o2var(k)=o2var(k)+(o2obs(i,j,k,bi,bj)-o2av(k))**2
155 & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
156 ENDDO
157 Cswdmonth -add-
158 DO it=1,12
159 po4varm(it,1)=po4varm(it,1)+
160 & (po4obsl1(i,j,it,bi,bj)-po4avm(it,1))**2
161 & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj)
162 po4varm(it,2)=po4varm(it,2)+
163 & (po4obsl2(i,j,it,bi,bj)-po4avm(it,2))**2
164 & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj)
165 po4varm(it,3)=po4varm(it,3)+
166 & (po4obsl3(i,j,it,bi,bj)-po4avm(it,3))**2
167 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
168 cQQ po4varm(it,4)=po4varm(it,4)+
169 cQQ & (po4obsl4(i,j,it,bi,bj)-po4avm(it,4))**2
170 cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
171 o2varm(it,1)=o2varm(it,1)+
172 & (o2obsl1(i,j,it,bi,bj)-o2avm(it,1))**2
173 & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj)
174 o2varm(it,2)=o2varm(it,2)+
175 & (o2obsl2(i,j,it,bi,bj)-o2avm(it,2))**2
176 & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj)
177 o2varm(it,3)=o2varm(it,3)+
178 & (o2obsl3(i,j,it,bi,bj)-o2avm(it,3))**2
179 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
180 cQQ o2varm(it,4)=o2varm(it,4)+
181 cQQ & (o2obsl4(i,j,it,bi,bj)-o2avm(it,4))**2
182 cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
183
184 ENDDO
185 ENDDO
186 ENDDO
187 ENDDO
188 ENDDO
189 DO k=1,Nr
190 po4var(k)=po4var(k)/volvar(k)
191 o2var(k)=o2var(k)/volvar(k)
192 cQQ print*,po4var(k),o2var(k)
193 ENDDO
194 Cswdmonth- add-
195 DO k=1,3
196 Do it=1,12
197 po4varm(it,k)=po4varm(it,k)/volvar(k)
198 o2varm(it,k)=o2varm(it,k)/volvar(k)
199 ENDDO
200 ENDDO
201 Cswdmonth -end-
202
203 C Reset averages to zero
204 print*,'QQ dic_aver_init, set to zero'
205 DO bj = myByLo(myThid), myByHi(myThid)
206 DO bi = myBxLo(myThid), myBxHi(myThid)
207 CALL TIMEAVE_RESET(PO4ann,Nr,bi,bj,myThid)
208 CALL TIMEAVE_RESET(O2ann,Nr,bi,bj,myThid)
209 CALL TIMEAVE_RESET(PO4lev1, 12, bi, bj, myThid)
210 CALL TIMEAVE_RESET(PO4lev2, 12, bi, bj, myThid)
211 CALL TIMEAVE_RESET(PO4lev3, 12, bi, bj, myThid)
212 cQQ CALL TIMEAVE_RESET(PO4lev4, 12, bi, bj, myThid)
213 CALL TIMEAVE_RESET(O2lev1, 12, bi, bj, myThid)
214 CALL TIMEAVE_RESET(O2lev2, 12, bi, bj, myThid)
215 CALL TIMEAVE_RESET(O2lev3, 12, bi, bj, myThid)
216 cQQ CALL TIMEAVE_RESET(O2lev4, 12, bi, bj, myThid)
217
218 OBS_timetave(bi,bj) = 0. _d 0
219 do it=1,12
220 OBSM_Timetave(it,bi,bj) = 0. _d 0
221 enddo
222 ENDDO
223 ENDDO
224
225 #endif /* ALLOW_TIMEAVE */
226 #endif /* ALLOW_DIC_COST */
227
228 RETURN
229 END

  ViewVC Help
Powered by ViewVC 1.1.22