/[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.11 - (show annotations) (download)
Tue Sep 9 19:58:26 2008 UTC (15 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q
Changes since 1.10: +1 -5 lines
fix for singleCpuIO & multi-threaded: remove _BEGIN/_END_MASTER between IO S/R call

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

  ViewVC Help
Powered by ViewVC 1.1.22