Back to home page

MITgcm

 
 

    


File indexing completed on 2021-04-08 05:12:33 UTC

view on githubraw file Latest commit ba0b0470 on 2021-04-08 01:06:32 UTC
fc7306ba7d Jean*0001 #include "THSICE_OPTIONS.h"
e813f81630 Jean*0002 #ifdef ALLOW_AIM
                0003 # include "AIM_OPTIONS.h"
                0004 #endif
fc7306ba7d Jean*0005 
87ea84cac6 Jean*0006 CBOP
                0007 C     !ROUTINE: THSICE_INI_VARS
                0008 C     !INTERFACE:
fc7306ba7d Jean*0009       SUBROUTINE THSICE_INI_VARS( myThid )
87ea84cac6 Jean*0010 
                0011 C     !DESCRIPTION: \bv
fc7306ba7d Jean*0012 C     *==========================================================*
87ea84cac6 Jean*0013 C     | S/R THSICE_INI_VARS
fc7306ba7d Jean*0014 C     | o initialize THermo_SeaICE variables
                0015 C     *==========================================================*
87ea84cac6 Jean*0016 C     \ev
                0017 
                0018 C     !USES:
fc7306ba7d Jean*0019       IMPLICIT NONE
                0020 
                0021 C     === Global variables ===
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
b25f5fd517 Jean*0025 #include "FFIELDS.h"
fc7306ba7d Jean*0026 #include "THSICE_PARAMS.h"
87ea84cac6 Jean*0027 #include "THSICE_VARS.h"
e813f81630 Jean*0028 #ifdef ALLOW_AIM
                0029 # include "AIM_FFIELDS.h"
                0030 #endif
fc7306ba7d Jean*0031 
87ea84cac6 Jean*0032 C     !INPUT/OUTPUT PARAMETERS:
fc7306ba7d Jean*0033 C     == Routine arguments ==
e813f81630 Jean*0034 C     myThid :: My Thread Id. number
fc7306ba7d Jean*0035       INTEGER myThid
87ea84cac6 Jean*0036 CEOP
fc7306ba7d Jean*0037 
                0038 #ifdef ALLOW_THSICE
                0039 C     == Local variables ==
87ea84cac6 Jean*0040 C     bi,bj  :: Loop counters
                0041 C     i,j    :: Loop counters
fc7306ba7d Jean*0042       INTEGER bi, bj
e813f81630 Jean*0043       INTEGER i, j
2cf110c259 Jean*0044 c     CHARACTER*(MAX_LEN_FNAM) fn
87ea84cac6 Jean*0045       _RL v2Loc
611a16e877 Dimi*0046       _RL Tf
fc7306ba7d Jean*0047 
                0048 c     set up ice arrays to zero if starting ice
e813f81630 Jean*0049       DO bj = myByLo(myThid), myByHi(myThid)
                0050         DO bi = myBxLo(myThid), myBxHi(myThid)
87ea84cac6 Jean*0051 C-        state variables :
7269783f6f Jean*0052           DO j=1-OLy,sNy+OLy
                0053            DO i=1-OLx,sNx+OLx
87ea84cac6 Jean*0054             iceMask(i,j,bi,bj)  = 0. _d 0
                0055             iceHeight(i,j,bi,bj)= 0. _d 0
fc7306ba7d Jean*0056             snowHeight(i,j,bi,bj)=0. _d 0
87ea84cac6 Jean*0057             Tsrf(i,j,bi,bj)     = 0. _d 0
                0058             Tice1(i,j,bi,bj)    = 0. _d 0
                0059             Tice2(i,j,bi,bj)    = 0. _d 0
                0060             Qice1(i,j,bi,bj)    = 0. _d 0
                0061             Qice2(i,j,bi,bj)    = 0. _d 0
                0062             snowAge(i,j,bi,bj)  = 0. _d 0
                0063            ENDDO
                0064           ENDDO
                0065 C-        fluxes :
7269783f6f Jean*0066           DO j=1-OLy,sNy+OLy
                0067            DO i=1-OLx,sNx+OLx
87ea84cac6 Jean*0068             sHeating(i,j,bi,bj) = 0. _d 0
                0069             flxCndBt(i,j,bi,bj) = 0. _d 0
a4e6fa7055 Jean*0070             siceAlb(i,j,bi,bj)  = 0. _d 0
7269783f6f Jean*0071             icFlxSW (i,j,bi,bj) = 0. _d 0
                0072             icFlxAtm(i,j,bi,bj) = 0. _d 0
                0073             icFrwAtm(i,j,bi,bj) = 0. _d 0
f6439efa9f Jean*0074 C-        needed when using advection/diffusion:
d6f06800ae Patr*0075             oceFWfx(i,j,bi,bj)  = 0. _d 0
                0076             oceSflx(i,j,bi,bj)  = 0. _d 0
                0077             oceQnet(i,j,bi,bj)  = 0. _d 0
87ea84cac6 Jean*0078            ENDDO
                0079           ENDDO
                0080 C-        oceanic mixed layer state :
                0081           v2Loc = vMxL_default*vMxL_default
7269783f6f Jean*0082           DO j=1-OLy,sNy+OLy
                0083            DO i=1-OLx,sNx+OLx
87ea84cac6 Jean*0084              hOceMxL(i,j,bi,bj) = hMxL_default
                0085              tOceMxL(i,j,bi,bj) = 0. _d 0
                0086              sOceMxL(i,j,bi,bj) = sMxL_default
                0087              v2ocMxL(i,j,bi,bj) = v2Loc
fc7306ba7d Jean*0088            ENDDO
                0089           ENDDO
e813f81630 Jean*0090 #ifdef ALLOW_AIM
                0091           IF ( useAIM ) THEN
                0092 C-        Mask mixed layer depth : depth is used in thsice slab_ocean
                0093 C         and this mask is used in thsice_advdiff and if coupled
                0094            DO j=1-OLy,sNy+OLy
                0095             DO i=1-OLx,sNx+OLx
                0096              IF ( aim_landFr(i,j,bi,bj).EQ.1. _d 0 )
                0097      &       hOceMxL(i,j,bi,bj) = 0.
                0098             ENDDO
                0099            ENDDO
                0100           ENDIF
                0101 #endif /* ALLOW_AIM */
fc7306ba7d Jean*0102         ENDDO
e813f81630 Jean*0103       ENDDO
de836be2bc Jean*0104       adjustFrW = 0. _d 0
fc7306ba7d Jean*0105 
987916f561 Jean*0106 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0107 
60cad0f1a5 Jean*0108 #ifdef ALLOW_OCN_COMPON_INTERF
                0109       IF ( useCoupler .AND. thSIce_skipThermo ) RETURN
                0110 #endif /* ALLOW_OCN_COMPON_INTERF */
                0111 
5b187c067b Jean*0112       IF ( startIceModel.LE.0 .AND.
                0113      &     ( nIter0.NE.0  .OR. pickupSuff.NE.' ' )
                0114      &   ) THEN
fc7306ba7d Jean*0115 C--     Read ice pickup fields
af20bc5e19 Jean*0116         CALL THSICE_READ_PICKUP( nIter0, myThid )
fc7306ba7d Jean*0117 
987916f561 Jean*0118       ELSE
                0119 C--     Read initial conditions:
187bb17f9b Dimi*0120         IF ( thSIceFract_InitFile .NE. ' ' ) THEN
                0121          CALL READ_REC_XY_RL(thSIceFract_InitFile,iceMask,1,0,myThid)
611a16e877 Dimi*0122         ENDIF
                0123         IF ( thSIceThick_InitFile .NE. ' ' ) THEN
                0124          CALL READ_REC_XY_RL(thSIceThick_InitFile,iceHeight,1,0,myThid)
187bb17f9b Dimi*0125         ENDIF
987916f561 Jean*0126         IF ( thSIceSnowH_InitFile .NE. ' ' ) THEN
                0127          CALL READ_REC_XY_RL(thSIceSnowH_InitFile,snowHeight,1,0,myThid)
                0128         ENDIF
                0129         IF ( thSIceSnowA_InitFile .NE. ' ' ) THEN
                0130          CALL READ_REC_XY_RL(thSIceSnowA_InitFile,snowAge,1,0,myThid)
                0131         ENDIF
                0132         IF ( thSIceEnthp_InitFile .NE. ' ' ) THEN
                0133          CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice1,1,0,myThid)
                0134          CALL READ_REC_XY_RL(thSIceEnthp_InitFile,Qice2,2,0,myThid)
611a16e877 Dimi*0135         ENDIF
                0136         IF ( thSIceTsurf_InitFile .NE. ' ' ) THEN
b56aaa4b63 Jean*0137          CALL READ_REC_XY_RL(thSIceTsurf_InitFile,Tsrf,1,0,myThid)
611a16e877 Dimi*0138         ENDIF
                0139         IF ( thSIceEnthp_InitFile .EQ. ' ' ) THEN
                0140 C-    enthalpy of new ice in J/kg, taken from thsice_extend.F with Tf beeing
ba0b047096 Mart*0141 C     the freezing Temp of seawater computed from a fixed salinity (31.5 g/kg)
552e00ed8a Dimi*0142 C     Tf = -mu_Tf*salinity = -1.70 deg C;  Qice1 ~ 3.2e5;  Qice2 ~ 3.4e5
611a16e877 Dimi*0143          Tf = -1.70 _d 0
187bb17f9b Dimi*0144          DO bj = myByLo(myThid), myByHi(myThid)
                0145           DO bi = myBxLo(myThid), myBxHi(myThid)
                0146            DO j=1-OLy,sNy+OLy
                0147             DO i=1-OLx,sNx+OLx
                0148              IF (iceMask(i,j,bi,bj) .NE. 0. _d 0) THEN
611a16e877 Dimi*0149               Qice1(i,j,bi,bj) = -cpWater*Tmlt1
                0150      &             + cpIce *(Tmlt1-Tf) + Lfresh*(1. _d 0-Tmlt1/Tf)
                0151               Qice2(i,j,bi,bj) = -cpIce *Tf + Lfresh
187bb17f9b Dimi*0152              ENDIF
                0153             ENDDO
                0154            ENDDO
                0155           ENDDO
                0156          ENDDO
987916f561 Jean*0157         ENDIF
                0158       ENDIF
                0159 
7163a40534 Jean*0160       _EXCH_XY_RL(iceMask,myThid)
                0161       _EXCH_XY_RL(iceHeight, myThid)
                0162       _EXCH_XY_RL(snowHeight,myThid)
                0163       _EXCH_XY_RL(Tsrf,   myThid)
                0164       _EXCH_XY_RL(Tice1,  myThid)
                0165       _EXCH_XY_RL(Tice2,  myThid)
                0166       _EXCH_XY_RL(Qice1,  myThid)
                0167       _EXCH_XY_RL(Qice2,  myThid)
                0168       _EXCH_XY_RL(snowAge,myThid)
fc7306ba7d Jean*0169 
b25f5fd517 Jean*0170 C--     Initialise Sea-Ice Loading for SeaIce-Dynamics :
611a16e877 Dimi*0171       IF ( useSEAICE ) THEN
                0172        DO bj = myByLo(myThid), myByHi(myThid)
                0173         DO bi = myBxLo(myThid), myBxHi(myThid)
                0174          DO j=1-OLy,sNy+OLy
                0175           DO i=1-OLx,sNx+OLx
                0176            sIceLoad(i,j,bi,bj) = ( snowHeight(i,j,bi,bj)*rhos
                0177      &          + iceHeight(i,j,bi,bj)*rhoi
                0178      &          )*iceMask(i,j,bi,bj)
b25f5fd517 Jean*0179           ENDDO
611a16e877 Dimi*0180          ENDDO
                0181         ENDDO
                0182        ENDDO
                0183       ENDIF
b25f5fd517 Jean*0184 
fc7306ba7d Jean*0185 #endif /* ALLOW_THSICE */
                0186 
                0187       RETURN
                0188       END