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

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

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

revision 1.11 by jmc, Tue Sep 9 19:58:26 2008 UTC revision 1.12 by heimbach, Fri Oct 16 15:48:33 2009 UTC
# Line 8  CStartOfInterFace Line 8  CStartOfInterFace
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    
# Line 29  C     == Routine arguments == Line 29  C     == Routine arguments ==
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 --

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22