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

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

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


Revision 1.4 - (show annotations) (download)
Tue Jul 13 18:03:31 2004 UTC (19 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint55c_post, checkpoint54e_post, checkpoint55d_pre, checkpoint57d_post, checkpoint57b_post, checkpoint57c_pre, checkpoint55j_post, checkpoint56b_post, checkpoint57e_post, checkpoint55h_post, checkpoint55b_post, checkpoint54d_post, checkpoint56c_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.3: +4 -0 lines
max number of passive tracers is now defined in PTRACERS_SIZE.h

1 C $Header: $
2 C $Name: $
3
4 cswdcost -- add sunroutine ---
5 #include "DIC_OPTIONS.h"
6 #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 #include "PTRACERS_SIZE.h"
25 #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 myIter
39 _RL myTime
40 INTEGER myThid
41
42 #ifdef ALLOW_DIC_COST
43
44 C == Local variables ==
45 LOGICAL DIFFERENT_MULTIPLE
46 EXTERNAL DIFFERENT_MULTIPLE
47 INTEGER i, j, bi, bj, k, it
48 c
49 _RL po4cost, o2cost, sumvol
50 _RL po4costm, o2costm, sumvolm
51 c
52 c calculate costfunction
53
54 _BEGIN_MASTER(myThid)
55
56 sumvol= 0. _d 0
57 po4cost= 0. _d 0
58 o2cost=0.d0
59 cswdmonth-add--
60 sumvolm=0.d0
61 po4costm=0.d0
62 o2costm=0.d0
63 cswdmonth -- end add --
64
65 DO bj=myByLo(myThid),myByHi(myThid)
66 DO bi=myBxLo(myThid),myBxHi(myThid)
67 DO i=1,sNx
68 DO j=1,sNy
69 do k=1,nR
70 sumvol=sumvol+
71 & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
72 po4cost=po4cost+
73 & (po4ann(i,j,k,bi,bj)-po4obs(i,j,k,bi,bj))**2
74 & /po4var(k)
75 & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
76 o2cost=o2cost+
77 & (o2ann(i,j,k,bi,bj)-o2obs(i,j,k,bi,bj))**2
78 & /o2var(k)
79 & *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
80 enddo
81 cswdmonth-add--
82 do k=1,4
83 sumvolm=sumvolm+
84 & rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj)
85 enddo
86 do it=1,12
87 po4costm=po4costm+
88 & (po4lev1(i,j,it,bi,bj)-po4obsl1(i,j,it,bi,bj))**2
89 & /po4varm(it,1)
90 & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) +
91 & (po4lev2(i,j,it,bi,bj)-po4obsl2(i,j,it,bi,bj))**2
92 & /po4varm(it,2)
93 & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) +
94 & (po4lev3(i,j,it,bi,bj)-po4obsl3(i,j,it,bi,bj))**2
95 & /po4varm(it,3)
96 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
97 cQQ & (po4lev4(i,j,it,bi,bj)-po4obsl4(i,j,it,bi,bj))**2
98 cQQ & /po4varm(it,4)
99 cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
100 o2costm=o2costm+
101 & (o2lev1(i,j,it,bi,bj)-o2obsl1(i,j,it,bi,bj))**2
102 & /o2varm(it,1)
103 & *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) +
104 & (o2lev2(i,j,it,bi,bj)-o2obsl2(i,j,it,bi,bj))**2
105 & /o2varm(it,2)
106 & *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) +
107 & (o2lev3(i,j,it,bi,bj)-o2obsl3(i,j,it,bi,bj))**2
108 & /o2varm(it,3)
109 & *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj)
110 cQQ & (O2lev4(i,j,it,bi,bj)-o2obsl4(i,j,it,bi,bj))**2
111 cQQ & /o2varm(it,4)
112 cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj)
113
114 enddo
115 cswdmonth -end-
116 ENDDO
117 ENDDO
118 ENDDO
119 ENDDO
120 po4cost=po4cost/sumvol
121 o2cost=o2cost/sumvol
122 cswdmonth-add
123 po4costm=po4costm/sumvolm/12.d0
124 o2costm=o2costm/sumvolm/12.d0
125 cswdmonth-end
126 totcost=po4cost+o2cost+po4costm+o2costm
127
128 print*,'COST ',totcost, po4cost, o2cost,po4costm,o2costm
129
130 _END_MASTER(myThid)
131 c
132 #endif
133 RETURN
134 END
135 cswd -- end added subroutine --

  ViewVC Help
Powered by ViewVC 1.1.22