C $Header: /u/gcmpack/MITgcm/pkg/dic/dic_cost.F,v 1.5 2005/04/06 18:36:47 jmc Exp $
C $Name:  $

cswdcost -- add sunroutine ---
#include "DIC_OPTIONS.h"
#include "GCHEM_OPTIONS.h"


CStartOfInterFace
      SUBROUTINE DIC_COST (
     I           myTime,myIter,myThid)

C     /==========================================================\
C     | SUBROUTINE DIC_COST  i                            |
C     |==========================================================|
      IMPLICIT NONE

C     == GLobal variables ==
#include "SIZE.h"
#include "DYNVARS.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
#include "PTRACERS_SIZE.h"
#include "PTRACERS.h"
#include "GCHEM.h"
#include "DIC_ABIOTIC.h"
#ifdef DIC_BIOTIC
#include "DIC_BIOTIC.h"
#include "DIC_DIAGS.h"
#include "DIC_COST.h"
#endif
#ifdef ALLOW_SEAICE
#include "ICE.h"
#endif

C     == Routine arguments ==
      INTEGER myIter
      _RL myTime
      INTEGER myThid

#ifdef ALLOW_DIC_COST

C     == Local variables ==
      INTEGER i, j, bi, bj, k, it
c
      _RL po4cost, o2cost, sumvol
      _RL po4costm, o2costm, sumvolm
c
c calculate costfunction

        _BEGIN_MASTER(myThid)

       sumvol= 0. _d 0
       po4cost= 0. _d 0
       o2cost=0.d0
cswdmonth-add--
       sumvolm=0.d0
       po4costm=0.d0
       o2costm=0.d0
cswdmonth -- end add --

       DO bj=myByLo(myThid),myByHi(myThid)
        DO bi=myBxLo(myThid),myBxHi(myThid)
         DO i=1,sNx
          DO j=1,sNy
           do k=1,nR
            sumvol=sumvol+
     &            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
          ENDDO
         ENDDO
        ENDDO
        po4cost=po4cost/sumvol
        o2cost=o2cost/sumvol
cswdmonth-add
        po4costm=po4costm/sumvolm/12.d0
        o2costm=o2costm/sumvolm/12.d0
cswdmonth-end
        totcost=po4cost+o2cost+po4costm+o2costm

        print*,'COST ',totcost, po4cost, o2cost,po4costm,o2costm

       _END_MASTER(myThid)
c
#endif
      RETURN
      END


cswd -- end added subroutine --