C $Header: /u/gcmpack/MITgcm/pkg/ebm/ebm_area_t.F,v 1.5 2011/08/29 19:39:33 jmc Exp $ C $Name: $ #include "EBM_OPTIONS.h" CBOP 0 C !ROUTINE: EBM_AREA_T C !INTERFACE: SUBROUTINE EBM_AREA_T( myTime, myIter, myThid ) C !DESCRIPTION: C *==========================================================* C | CALCULATE MEAN TEMPERATURE OVER 4 LAT. BAND C *==========================================================* C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "DYNVARS.h" #include "FFIELDS.h" #ifdef ALLOW_EBM # include "EBM.h" #endif #ifdef ALLOW_AUTODIFF_TAMC # include "tamc.h" # include "tamc_keys.h" #endif C !INPUT PARAMETERS: C myThid :: my Thread Id number _RL myTime INTEGER myIter INTEGER myThid CEOP #ifdef ALLOW_EBM C !LOCAL VARIABLES: C i, j, k :: Loop counters 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 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. -latBnd(3) .AND. & yC(i,j,bi,bj) .LE. -latBnd(2) ) THEN TmlS_tile(bi,bj) = TmlS_tile(bi,bj) & + maskC(i,j,k,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. -latBnd(2) .AND. & yC(i,j,bi,bj) .LT. -latBnd(1) ) THEN TtS_tile(bi,bj) = TtS_tile(bi,bj) & + maskC(i,j,k,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. latBnd(1) .AND. & yC(i,j,bi,bj) .LT. latBnd(2) ) THEN TtN_tile(bi,bj) = TtN_tile(bi,bj) & + maskC(i,j,k,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. latBnd(2) .AND. & yC(i,j,bi,bj) .LT. latBnd(3) ) THEN TmlN_tile(bi,bj) = TmlN_tile(bi,bj) & + maskC(i,j,k,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 ENDDO ENDDO CALL GLOBAL_SUM_TILE_RL( TmlS_tile, TmlS, myThid ) CALL GLOBAL_SUM_TILE_RL( TmlN_tile, TmlN, myThid ) CALL GLOBAL_SUM_TILE_RL( TtS_tile, TtS, myThid ) CALL GLOBAL_SUM_TILE_RL( TtN_tile, TtN, myThid ) CALL GLOBAL_SUM_TILE_RL( CountmlS_tile, CountmlS, myThid ) CALL GLOBAL_SUM_TILE_RL( CountmlN_tile, CountmlN, myThid ) CALL GLOBAL_SUM_TILE_RL( CounttS_tile, CounttS, myThid ) CALL GLOBAL_SUM_TILE_RL( CounttN_tile, 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 _BEGIN_MASTER(myThid) IF ( CountmlS .NE. 0.) TmlS = TmlS/CountmlS IF ( CountmlN .NE. 0.) TmlN = TmlN/CountmlN IF ( CounttS .NE. 0.) TtS = TtS /CounttS IF ( CounttN .NE. 0.) TtN = TtN /CounttN TmlS = TmlS + t_mlt TmlN = TmlN + t_mlt TtS = TtS + t_mlt TtN = TtN + t_mlt _END_MASTER(myThid) _BARRIER #endif /* ALLOW_EBM */ RETURN END