/[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.9 - (hide annotations) (download)
Tue Apr 8 20:21:35 2008 UTC (16 years, 2 months ago) by dfer
Branch: MAIN
Changes since 1.8: +2 -7 lines
Moving forcing-related filenames and parameters from gchem to dic/cfc

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

  ViewVC Help
Powered by ViewVC 1.1.22