C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/ksnow/press_release/code_expt/shelfice_init_varia.F,v 1.5 2017/07/11 13:48:29 dgoldberg Exp $ C $Name: $ #include "SHELFICE_OPTIONS.h" CBOP SUBROUTINE SHELFICE_INIT_VARIA( myThid ) C *============================================================* C | SUBROUTINE SHELFICE_INIT_VARIA C | o Routine to initialize SHELFICE variables. C *============================================================* C | Initialize SHELFICE parameters and variables. C *============================================================* IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "SHELFICE.h" #ifdef ALLOW_COST # include "SHELFICE_COST.h" #endif /* ALLOW_COST */ #ifdef ALLOW_SHELFICE_GROUNDED_ICE #include "SURFACE.h" #endif C === Routine arguments === C myThid - Number of this instance of SHELFICE_INIT_VARIA INTEGER myThid CEndOfInterface #ifdef ALLOW_SHELFICE C === Local variables === C i,j,bi,bj - Loop counters INTEGER i, j, bi, bj, ks #ifdef ALLOW_SHELFICE_GROUNDED_ICE ! simply as an argument to find the the grounded factor _RL massMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif CEOP DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO j = 1-OLy, sNy+OLy DO i = 1-OLx, sNx+OLx shelficeForcingT (i,j,bi,bj) = 0. _d 0 shelficeForcingS (i,j,bi,bj) = 0. _d 0 shelficeHeatFlux (i,j,bi,bj) = 0. _d 0 shelficeFreshWaterFlux(i,j,bi,bj) = 0. _d 0 shiTransCoeffT (i,j,bi,bj) = 0. _d 0 shiTransCoeffS (i,j,bi,bj) = 0. _d 0 shelficeMass (i,j,bi,bj) = 0. _d 0 EFFMASS (i,j,bi,bj) = 0. _d 0 SeaLevelRestore (i,j,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO IF ( .NOT. SHELFICEuseGammaFrict ) THEN IF ( SHELFICETransCoeffTFile .NE. ' ' ) THEN CALL READ_FLD_XY_RL( SHELFICETransCoeffTFile, ' ', & shiTransCoeffT, 0, myThid ) _EXCH_XY_RL( shiTransCoeffT, 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 shiTransCoeffS(i,j,bi,bj) = 5.05 _d -3 * & shiTransCoeffT(i,j,bi,bj) ENDDO ENDDO ENDDO ENDDO ELSE C set coefficients to constant values DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO j = 1-OLy, sNy+OLy DO i = 1-OLx, sNx+OLx shiTransCoeffT(i,j,bi,bj) = SHELFICEheatTransCoeff shiTransCoeffS(i,j,bi,bj) = SHELFICEsaltTransCoeff ENDDO ENDDO ENDDO ENDDO ENDIF ENDIF DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO j = 1-OLy, sNy+OLy DO i = 1-OLx, sNx+OLx shelficeMass(i,j,bi,bj) = shelficeMassInit(i,j,bi,bj) ENDDO ENDDO ENDDO ENDDO IF (shelficeMassStepping) THEN IF ( .NOT. ( startTime .EQ. baseTime .AND. nIter0 .EQ. 0 & .AND. pickupSuff .EQ. ' ') ) THEN CALL SHELFICE_READ_PICKUP ( myThid ) IF ( usingZCoords ) THEN DO bj=myByLo(myThid), myByHi(myThid) DO bi=myBxLo(myThid), myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx ro_surf(i,j,bi,bj) = & R_shelfIce(i,j,bi,bj) ENDDO ENDDO ENDDO ENDDO ENDIF ENDIF ENDIF #ifdef ALLOW_COST DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO j = 1-OLy, sNy+OLy DO i = 1-OLx, sNx+OLx cMeanSHIforT (i,j,bi,bj) = 0. _d 0 cMeanSHIforS (i,j,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO c-- DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) objf_shelfice(bi,bj) = 0. _d 0 objf_shifwflx(bi,bj) = 0. _d 0 num_shifwflx(bi,bj) = 0. _d 0 ENDDO ENDDO #endif /* ALLOW_COST */ #ifdef ALLOW_SHELFICE_GROUNDED_ICE DO bj=myByLo(myThid), myByHi(myThid) DO bi=myBxLo(myThid), myBxHi(myThid) C-- Compute the mimimum value of r_surf (used for computing hFac_surfC) DO j=1,sNy DO i=1,sNx ks = kSurfC(i,j,bi,bj) IF (ks.LE.Nr) THEN Rmin_surf(i,j,bi,bj) = & MAX(rF(ks+1),R_low(i,j,bi,bj)) + hFacInf*drF(ks) ENDIF ENDDO ENDDO C- end bi,bj loop. ENDDO ENDDO _EXCH_XY_RL (Rmin_surf, myThid) #endif #endif /* ALLOW_SHELFICE */ RETURN END