C $Header: /u/gcmpack/MITgcm/pkg/admtlm/admtlm_metric.F,v 1.7 2012/08/12 18:29:25 jmc Exp $
C $Name:  $

#include "ADMTLM_OPTIONS.h"

      subroutine ADMTLM_METRIC( myThid )
C     /==========================================================\
C     | subroutine admtlm_metric                                 |
C     | o This routine assigns final T,S to cost function        |
C     \==========================================================/
       implicit none

C     == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
#include "DYNVARS.h"
#ifdef ALLOW_ADMTLM
# include "cost.h"
# include "g_cost.h"
# include "optim.h"
#endif

C     ======== Routine arguments ======================
C     myThid - Thread number for this instance of the routine.
      integer myThid

#ifdef ALLOW_ADMTLM
C     ========= Local variables =========================
      integer i, j, k
      integer bi, bj
      _RL myMetric
      _RL stdDevSST
      _RL stdDevSSS
      _RL stdDevtheta
      _RL stdDevsalt
      _RL stdDevuvel
      _RL stdDevvvel
      _RL stdDevetan

      myMetric  = 0. _d 0
      stdDevSST = 0.52 _d 0
      stdDevSSS = 0.134 _d 0
      stdDevtheta = 1.
      stdDevsalt  = 1.
      stdDevuvel  = 1.
      stdDevvvel  = 1.
      stdDevetan  = 1.

      DO bj=myByLo(myThid),myByHi(myThid)
       DO bi=myBxLo(myThid),myBxHi(myThid)
        DO j=1,sNy
         DO i=1,sNx
          DO k=1,Nr
           myMetric = myMetric
     &      + g_objf_state_final(i,j,bi,bj,k+0*Nr)**2/stdDevtheta**2
     &      + g_objf_state_final(i,j,bi,bj,k+1*Nr)**2/stdDevsalt**2
     &      + g_objf_state_final(i,j,bi,bj,k+2*Nr)**2/stdDevuvel**2
     &      + g_objf_state_final(i,j,bi,bj,k+3*Nr)**2/stdDevvvel**2
          END


DO myMetric = myMetric & + g_objf_state_final(i,j,bi,bj,1+4*Nr)**2/stdDevetan**2 END


DO END


DO END


DO END


DO _GLOBAL_SUM_RL( myMetric , myThid ) myMetric = myMetric/(nx*ny*(4*Nr+1)) cph( DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1,sNy DO i=1,sNx c print '(a,2I4,2(x,F15.9))', 'ph-metric T ', i, j, c & g_objf_state_final(i,j,bi,bj,1), c & g_objf_state_final(i,j,bi,bj,1)**2 / stdDevSST**2 c print '(a,2I4,2(x,F15.9))', 'ph-metric S ', i, j, c & g_objf_state_final(i,j,bi,bj,2), c & g_objf_state_final(i,j,bi,bj,2)**2 / stdDevSSS**2 END


DO END


DO END


DO END


DO print *, 'ph-admtlm myMetric = ', optimcycle, myMetric cph) #endif end