C $Header: /u/gcmpack/MITgcm/pkg/ebm/ebm_area_t.F,v 1.4 2009/04/28 18:42:56 jmc Exp $
C $Name: $
#include "EBM_OPTIONS.h"
SUBROUTINE EBM_AREA_T( myTime, myIter, myThid )
C |==========================================================|
C | S/R CALCULATE ZONAL MEAN TEMPERATURE |
C |==========================================================|
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "FFIELDS.h"
#include "DYNVARS.h"
#include "GRID.h"
#ifdef ALLOW_EBM
# include "EBM.h"
#endif
#ifdef ALLOW_AUTODIFF_TAMC
# include "tamc.h"
# include "tamc_keys.h"
#endif
C === Routine arguments ===
C myThid - Instance number for this innvocation
INTEGER myThid
INTEGER myIter
_RL myTime
CEndOfInterface
C == Local variables ==
C I, J, K - Loop counters
#ifdef ALLOW_EBM
INTEGER iMin, iMax, jMin, jMax
INTEGER i, j, k, bi, bj
_RL TmlS_tile(nSx, nSy)
_RL TmlN_tile(nSx, nSy)
_RL TtS_tile(nSx, nSy)
_RL TtN_tile(nSx, nSy)
_RL CountmlS_tile(nSx, nSy)
_RL CountmlN_tile(nSx, nSy)
_RL CounttS_tile(nSx, nSy)
_RL CounttN_tile(nSx, nSy)
_RL CountmlS
_RL CountmlN
_RL CounttS
_RL CounttN
C-- Top layer only
k = 1
TmlS = 0.0
CountmlS = 0.0
TmlN = 0.0
CountmlN = 0.0
TtS = 0.0
CounttS = 0.0
TtN = 0.0
CounttN = 0.0
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
TmlS_tile(bi,bj) = 0.
TmlN_tile(bi,bj) = 0.
TtS_tile(bi,bj) = 0.
TtN_tile(bi,bj) = 0.
CountmlS_tile(bi,bj) = 0.
CountmlN_tile(bi,bj) = 0.
CounttS_tile(bi,bj) = 0.
CounttN_tile(bi,bj) = 0.
C-- Calculate sum of temperatures over each tile
DO j = 1,sNy
DO i = 1, sNx
IF ( yC(i,j,bi,bj) .GE. -lat(3) .AND.
& yC(i,j,bi,bj) .LE. -lat(2)) THEN
TmlS_tile(bi,bj) = TmlS_tile(bi,bj) +
& theta(i,j,k,bi,bj)
CountmlS_tile(bi,bj) = CountmlS_tile(bi,bj) +
& maskC(i,j,k,bi,bj)
ELSEIF ( yC(i,j,bi,bj) .GT. -lat(2) .AND.
& yC(i,j,bi,bj) .LT. -lat(1)) THEN
TtS_tile(bi,bj) = TtS_tile(bi,bj) +
& theta(i,j,k,bi,bj)
CounttS_tile(bi,bj) = CounttS_tile(bi,bj) +
& maskC(i,j,k,bi,bj)
ELSEIF ( yC(i,j,bi,bj) .GT. lat(1) .AND.
& yC(i,j,bi,bj) .LT. lat(2)) THEN
TtN_tile(bi,bj) = TtN_tile(bi,bj) +
& theta(i,j,k,bi,bj)
CounttN_tile(bi,bj) = CounttN_tile(bi,bj) +
& maskC(i,j,k,bi,bj)
ELSEIF ( yC(i,j,bi,bj) .GE. lat(2) .AND.
& yC(i,j,bi,bj) .LT. lat(3)) THEN
TmlN_tile(bi,bj) = TmlN_tile(bi,bj) +
& theta(i,j,k,bi,bj)
CountmlN_tile(bi,bj) = CountmlN_tile(bi,bj) +
& maskC(i,j,k,bi,bj)
ENDIF
ENDDO
ENDDO
C-- Sum over the tiles
TmlS = TmlS + TmlS_tile(bi,bj)
CountmlS = CountmlS + CountmlS_tile(bi,bj)
TmlN = TmlN + TmlN_tile(bi,bj)
CountmlN = CountmlN + CountmlN_tile(bi,bj)
TtS = TtS + TtS_tile(bi,bj)
CounttS = CounttS + CounttS_tile(bi,bj)
TtN = TtN + TtN_tile(bi,bj)
CounttN = CounttN + CounttN_tile(bi,bj)
ENDDO
ENDDO
_GLOBAL_SUM_RL( TmlS, myThid )
_GLOBAL_SUM_RL( TmlN, myThid )
_GLOBAL_SUM_RL( TtS, myThid )
_GLOBAL_SUM_RL( TtN, myThid )
c
_GLOBAL_SUM_RL( CountmlS, myThid )
_GLOBAL_SUM_RL( CountmlN, myThid )
_GLOBAL_SUM_RL( CounttS, myThid )
_GLOBAL_SUM_RL( CounttN, myThid )
#ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE CountmlS = comlev1, key = ikey_dynamics
CADJ STORE CountmlN = comlev1, key = ikey_dynamics
CADJ STORE CounttS = comlev1, key = ikey_dynamics
CADJ STORE CounttN = comlev1, key = ikey_dynamics
#endif
if ( CountmlS .NE. 0.) TmlS = TmlS/CountmlS + t_mlt
if ( CountmlN .NE. 0.) TmlN = TmlN/CountmlN + t_mlt
if ( CounttS .NE. 0.) TtS = TtS/CounttS + t_mlt
if ( CounttN .NE. 0.) TtN = TtN/CounttN + t_mlt
#endif /* ALLOW_EBM */
RETURN
END