C $Header: /u/gcmpack/MITgcm/pkg/ggl90/ggl90_init_varia.F,v 1.8 2015/02/21 20:10:08 jmc Exp $ C $Name: $ #include "GGL90_OPTIONS.h" CBOP C !ROUTINE: GGL90_INIT_VARIA C !INTERFACE: SUBROUTINE GGL90_INIT_VARIA( myThid ) C !DESCRIPTION: \bv C *================================================================* C | SUBROUTINE GGL90_INIT_VARIA C | o initialize variables C *================================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "GGL90.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C myThid - Number of this instance of GGL90_INIT INTEGER myThid #ifdef ALLOW_GGL90 C !LOCAL VARIABLES: C == Local variables == C bi,bj,I,J,K,Km1 - Loop counters INTEGER bi, bj INTEGER I, J, K INTEGER Km1 CEOP C-- Over all tiles DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) C- 3D arrays DO K=1,Nr Km1 = MAX(K-1,1) DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx GGL90viscArU(I,J,K,bi,bj) = 0. _d 0 GGL90viscArV(I,J,K,bi,bj) = 0. _d 0 GGL90diffKr(I,J,K,bi,bj) = 0. _d 0 IF ( useIDEMIX) THEN GGL90TKE(I,J,K,bi,bj)=GGL90eps*maskC(I,J,K,bi,bj) ELSE CML GGL90TKE(I,J,K,bi,bj)=0. _d 0 GGL90TKE(I,J,K,bi,bj)=GGL90TKEmin*maskC(I,J,K,bi,bj) ENDIF ENDDO ENDDO ENDDO C- 2D arrays ENDDO ENDDO #ifdef ALLOW_GGL90_IDEMIX c----------------------------------------------------------------------- c IDEMIX c----------------------------------------------------------------------- C-- Over all tiles DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO K=1,Nr DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx IDEMIX_E(I,J,K,bi,bj) = 0. _d 0 IDEMIX_V0(I,J,K,bi,bj) = 0. _d 0 IDEMIX_tau_d(I,J,K,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx IDEMIX_F_B(I,J,bi,bj) = 0. _d 0 IDEMIX_F_S(I,J,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO c----------------------------------------------------------------------- c read in forcing fields for IDEMIX c----------------------------------------------------------------------- IF ( useIDEMIX .AND. IDEMIX_tidal_file .NE. ' ' ) THEN CALL READ_REC_XY_RL( IDEMIX_tidal_file,IDEMIX_F_b,1,0,myThid ) _EXCH_XY_RL(IDEMIX_F_b,myThid) DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx IDEMIX_F_b(i,j,bi,bj) = -MAX(0. _d 0, & MIN(1. _d 0,IDEMIX_F_b(i,j,bi,bj))) C fraction that enters IW field IDEMIX_F_b(i,j,bi,bj) = IDEMIX_frac_F_b* CML & IDEMIX_F_b(i,j,bi,bj)*recip_rhoConst & IDEMIX_F_b(i,j,bi,bj)/1024. _d 0 ENDDO ENDDO ENDDO ENDDO ENDIF IF ( useIDEMIX .AND. IDEMIX_wind_file .NE. ' ' ) THEN CALL READ_REC_XY_RL( IDEMIX_wind_file ,IDEMIX_F_s,1,0,myThid ) _EXCH_XY_RL(IDEMIX_F_s,myThid) DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx IDEMIX_F_s(i,j,bi,bj) = MAX(0. _d 0, & MIN(1. _d 0,IDEMIX_F_s(i,j,bi,bj))) C fraction that leaves mixed layer IDEMIX_F_s(i,j,bi,bj) = IDEMIX_frac_F_s* CML & IDEMIX_F_s(i,j,bi,bj)*recip_rhoConst & IDEMIX_F_s(i,j,bi,bj)/1024. ENDDO ENDDO ENDDO ENDDO ENDIF #endif /* ALLOW_GGL90_IDEMIX */ IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN CALL GGL90_READ_PICKUP( nIter0, myThid ) ELSE C-- Read initial turbulent kinetic energy thickness from file if available. IF ( GGL90TKEFile .NE. ' ' ) THEN CALL READ_FLD_XYZ_RL( GGL90TKEFile, ' ', GGL90TKE, 0, myThid ) _EXCH_XYZ_RL(GGL90TKE,myThid) DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO K=1,Nr DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx GGL90TKE(I,J,K,bi,bj) = MAX(GGL90TKE(I,J,K,bi,bj), & GGL90TKEmin)*maskC(I,J,K,bi,bj) ENDDO ENDDO ENDDO ENDDO ENDDO ENDIF ENDIF #endif /* ALLOW_GGL90 */ RETURN END