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

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

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


Revision 1.8 - (hide annotations) (download)
Fri Apr 4 21:37:06 2008 UTC (16 years, 2 months ago) by dfer
Branch: MAIN
Changes since 1.7: +2 -3 lines
Merging DIC_ABIOTIC.h and DIC_BIOTIC.h

1 dfer 1.8 C $Header: /u/gcmpack/MITgcm/pkg/dic/dic_cost.F,v 1.7 2007/11/30 17:47:41 stephd Exp $
2 jmc 1.4 C $Name: $
3    
4 stephd 1.1 cswdcost -- add sunroutine ---
5 edhill 1.3 #include "DIC_OPTIONS.h"
6 stephd 1.1 #include "GCHEM_OPTIONS.h"
7    
8    
9     CStartOfInterFace
10     SUBROUTINE DIC_COST (
11     I myTime,myIter,myThid)
12    
13     C /==========================================================\
14     C | SUBROUTINE DIC_COST 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.6 c#include "PTRACERS_SIZE.h"
25     c#include "PTRACERS_PARAMS.h"
26     c#include "PTRACERS_FIELDS.h"
27 stephd 1.1 #include "GCHEM.h"
28 dfer 1.8 #include "DIC_VARS.h"
29 stephd 1.1 #ifdef DIC_BIOTIC
30     #include "DIC_DIAGS.h"
31 stephd 1.2 #include "DIC_COST.h"
32 stephd 1.1 #endif
33 stephd 1.7 c#ifdef ALLOW_SEAICE
34     c#include "SEAICE.h"
35     c#endif
36 stephd 1.1
37     C == Routine arguments ==
38     INTEGER myIter
39     _RL myTime
40     INTEGER myThid
41    
42     #ifdef ALLOW_DIC_COST
43    
44     C == Local variables ==
45     INTEGER i, j, bi, bj, k, it
46     c
47 stephd 1.2 _RL po4cost, o2cost, sumvol
48 stephd 1.1 _RL po4costm, o2costm, sumvolm
49     c
50     c calculate costfunction
51    
52 stephd 1.2 _BEGIN_MASTER(myThid)
53 stephd 1.1
54     sumvol= 0. _d 0
55     po4cost= 0. _d 0
56     o2cost=0.d0
57     cswdmonth-add--
58 stephd 1.2 sumvolm=0.d0
59 stephd 1.1 po4costm=0.d0
60     o2costm=0.d0
61     cswdmonth -- end add --
62    
63     DO bj=myByLo(myThid),myByHi(myThid)
64     DO bi=myBxLo(myThid),myBxHi(myThid)
65     DO i=1,sNx
66     DO j=1,sNy
67     do k=1,nR
68     sumvol=sumvol+
69     & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
70     po4cost=po4cost+
71     & (po4ann(i,j,k,bi,bj)-po4obs(i,j,k,bi,bj))**2
72     & /po4var(k)
73     & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
74     o2cost=o2cost+
75     & (o2ann(i,j,k,bi,bj)-o2obs(i,j,k,bi,bj))**2
76     & /o2var(k)
77     & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
78     enddo
79     cswdmonth-add--
80     do k=1,4
81     sumvolm=sumvolm+
82     & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
83     enddo
84     do it=1,12
85     po4costm=po4costm+
86     & (po4lev1(i,j,it,bi,bj)-po4obsl1(i,j,it,bi,bj))**2
87     & /po4varm(it,1)
88     & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) +
89     & (po4lev2(i,j,it,bi,bj)-po4obsl2(i,j,it,bi,bj))**2
90     & /po4varm(it,2)
91     & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) +
92     & (po4lev3(i,j,it,bi,bj)-po4obsl3(i,j,it,bi,bj))**2
93     & /po4varm(it,3)
94 jmc 1.6 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
95 stephd 1.1 cQQ & (po4lev4(i,j,it,bi,bj)-po4obsl4(i,j,it,bi,bj))**2
96     cQQ & /po4varm(it,4)
97 jmc 1.6 cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
98 stephd 1.1 o2costm=o2costm+
99     & (o2lev1(i,j,it,bi,bj)-o2obsl1(i,j,it,bi,bj))**2
100     & /o2varm(it,1)
101     & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) +
102     & (o2lev2(i,j,it,bi,bj)-o2obsl2(i,j,it,bi,bj))**2
103     & /o2varm(it,2)
104     & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) +
105     & (o2lev3(i,j,it,bi,bj)-o2obsl3(i,j,it,bi,bj))**2
106     & /o2varm(it,3)
107 jmc 1.6 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
108 stephd 1.1 cQQ & (O2lev4(i,j,it,bi,bj)-o2obsl4(i,j,it,bi,bj))**2
109     cQQ & /o2varm(it,4)
110     cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
111    
112     enddo
113     cswdmonth -end-
114     ENDDO
115     ENDDO
116     ENDDO
117     ENDDO
118     po4cost=po4cost/sumvol
119     o2cost=o2cost/sumvol
120     cswdmonth-add
121     po4costm=po4costm/sumvolm/12.d0
122     o2costm=o2costm/sumvolm/12.d0
123     cswdmonth-end
124     totcost=po4cost+o2cost+po4costm+o2costm
125    
126     print*,'COST ',totcost, po4cost, o2cost,po4costm,o2costm
127    
128 stephd 1.2 _END_MASTER(myThid)
129 stephd 1.1 c
130     #endif
131     RETURN
132     END
133     cswd -- end added subroutine --

  ViewVC Help
Powered by ViewVC 1.1.22