8 |
I myTime,myIter,myThid) |
I myTime,myIter,myThid) |
9 |
|
|
10 |
C /==========================================================\ |
C /==========================================================\ |
11 |
C | SUBROUTINE DIC_COST i | |
C | SUBROUTINE DIC_COST | |
12 |
C |==========================================================| |
C |==========================================================| |
13 |
IMPLICIT NONE |
IMPLICIT NONE |
14 |
|
|
29 |
_RL myTime |
_RL myTime |
30 |
INTEGER myThid |
INTEGER myThid |
31 |
|
|
32 |
#ifdef ALLOW_DIC_COST |
#ifdef ALLOW_COST |
33 |
|
|
34 |
C == Local variables == |
C == Local variables == |
35 |
INTEGER i, j, bi, bj, k, it |
INTEGER i, j, bi, bj, k, it |
36 |
|
_RL tmpcost |
37 |
c |
c |
|
_RL po4cost, o2cost, sumvol |
|
|
_RL po4costm, o2costm, sumvolm |
|
38 |
c |
c |
39 |
c calculate costfunction |
c calculate costfunction |
40 |
|
|
41 |
sumvol= 0. _d 0 |
tmpcost = 0. _d 0 |
|
po4cost= 0. _d 0 |
|
|
o2cost=0.d0 |
|
|
cswdmonth-add-- |
|
|
sumvolm=0.d0 |
|
|
po4costm=0.d0 |
|
|
o2costm=0.d0 |
|
|
cswdmonth -- end add -- |
|
|
|
|
42 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
43 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
44 |
DO i=1,sNx |
DO i=1,sNx |
45 |
DO j=1,sNy |
DO j=1,sNy |
46 |
do k=1,nR |
tmpcost = tmpcost+FluxCO2(i,j,bi,bj)*rA(i,j,bi,bj)* |
47 |
sumvol=sumvol+ |
& maskC(i,j,1,bi,bj)*dTtracerLev(1) |
|
& rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj) |
|
|
po4cost=po4cost+ |
|
|
& (po4ann(i,j,k,bi,bj)-po4obs(i,j,k,bi,bj))**2 |
|
|
& /po4var(k) |
|
|
& *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj) |
|
|
o2cost=o2cost+ |
|
|
& (o2ann(i,j,k,bi,bj)-o2obs(i,j,k,bi,bj))**2 |
|
|
& /o2var(k) |
|
|
& *rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj) |
|
|
enddo |
|
|
cswdmonth-add-- |
|
|
do k=1,4 |
|
|
sumvolm=sumvolm+ |
|
|
& rA(i,j,bi,bj)*drF(k)*maskC(i,j,k,bi,bj) |
|
|
enddo |
|
|
do it=1,12 |
|
|
po4costm=po4costm+ |
|
|
& (po4lev1(i,j,it,bi,bj)-po4obsl1(i,j,it,bi,bj))**2 |
|
|
& /po4varm(it,1) |
|
|
& *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) + |
|
|
& (po4lev2(i,j,it,bi,bj)-po4obsl2(i,j,it,bi,bj))**2 |
|
|
& /po4varm(it,2) |
|
|
& *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) + |
|
|
& (po4lev3(i,j,it,bi,bj)-po4obsl3(i,j,it,bi,bj))**2 |
|
|
& /po4varm(it,3) |
|
|
& *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj) |
|
|
cQQ & (po4lev4(i,j,it,bi,bj)-po4obsl4(i,j,it,bi,bj))**2 |
|
|
cQQ & /po4varm(it,4) |
|
|
cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj) |
|
|
o2costm=o2costm+ |
|
|
& (o2lev1(i,j,it,bi,bj)-o2obsl1(i,j,it,bi,bj))**2 |
|
|
& /o2varm(it,1) |
|
|
& *rA(i,j,bi,bj)*drF(1)*maskC(i,j,1,bi,bj) + |
|
|
& (o2lev2(i,j,it,bi,bj)-o2obsl2(i,j,it,bi,bj))**2 |
|
|
& /o2varm(it,2) |
|
|
& *rA(i,j,bi,bj)*drF(2)*maskC(i,j,2,bi,bj) + |
|
|
& (o2lev3(i,j,it,bi,bj)-o2obsl3(i,j,it,bi,bj))**2 |
|
|
& /o2varm(it,3) |
|
|
& *rA(i,j,bi,bj)*drF(3)*maskC(i,j,3,bi,bj) |
|
|
cQQ & (O2lev4(i,j,it,bi,bj)-o2obsl4(i,j,it,bi,bj))**2 |
|
|
cQQ & /o2varm(it,4) |
|
|
cQQ & *rA(i,j,bi,bj)*drF(4)*maskC(i,j,4,bi,bj) |
|
|
|
|
|
enddo |
|
|
cswdmonth -end- |
|
|
ENDDO |
|
48 |
ENDDO |
ENDDO |
49 |
ENDDO |
ENDDO |
50 |
ENDDO |
ENDDO |
51 |
po4cost=po4cost/sumvol |
ENDDO |
52 |
o2cost=o2cost/sumvol |
|
53 |
cswdmonth-add |
_GLOBAL_SUM_RL(tmpcost,myThid) |
54 |
po4costm=po4costm/sumvolm/12.d0 |
|
55 |
o2costm=o2costm/sumvolm/12.d0 |
totcost = totcost + tmpcost |
56 |
cswdmonth-end |
|
57 |
totcost=po4cost+o2cost+po4costm+o2costm |
print *, 'QQ myiter, totcost = ', myiter, totcost |
58 |
|
|
|
print*,'COST ',totcost, po4cost, o2cost,po4costm,o2costm |
|
|
c |
|
59 |
#endif |
#endif |
60 |
|
|
61 |
RETURN |
RETURN |
62 |
END |
END |
63 |
cswd -- end added subroutine -- |
cswd -- end added subroutine -- |