Back to home page

MITgcm

 
 

    


File indexing completed on 2024-05-25 05:11:11 UTC

view on githubraw file Latest commit 00f81e67 on 2024-05-24 21:00:12 UTC
ffe464dc7d Mart*0001 #include "SHELFICE_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C !ROUTINE: SHELFICE_READPARMS
                0005 
                0006 C !INTERFACE: ==========================================================
                0007       SUBROUTINE SHELFICE_READPARMS( myThid )
                0008 
                0009 C !DESCRIPTION:
                0010 C     Initialize SHELFICE parameters, read in data.shelfice
                0011 
                0012 C !USES: ===============================================================
                0013       IMPLICIT NONE
                0014 #include "SIZE.h"
                0015 #include "EEPARAMS.h"
                0016 #include "PARAMS.h"
359d9ec3d7 Patr*0017 #include "SHELFICE.h"
abed653eb5 Mart*0018 #ifdef ALLOW_COST
                0019 # include "SHELFICE_COST.h"
                0020 #endif /* ALLOW_COST */
ffe464dc7d Mart*0021 #ifdef ALLOW_MNC
                0022 # include "MNC_PARAMS.h"
                0023 #endif
                0024 
                0025 C !INPUT PARAMETERS: ===================================================
                0026 C  myThid               :: thread number
                0027       INTEGER myThid
                0028 
                0029 C !OUTPUT PARAMETERS: ==================================================
                0030 C  none
                0031 
                0032 #ifdef ALLOW_SHELFICE
                0033 
                0034 C !LOCAL VARIABLES: ====================================================
bee329ac67 Jean*0035 C  iUnit                :: unit number for I/O
                0036 C  msgBuf               :: message buffer
ffe464dc7d Mart*0037       INTEGER iUnit
                0038       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0039 CEOP
                0040 
                0041       NAMELIST /SHELFICE_PARM01/
7b8b86ab99 Timo*0042      &     SHELFICEsaltToHeatRatio,
17292dde13 Mart*0043      &     SHELFICEheatTransCoeff,
                0044      &     SHELFICEsaltTransCoeff,
005af54e38 Jean*0045      &     SHELFICEMassStepping, SHI_update_kTopC,
17292dde13 Mart*0046      &     rhoShelfice, SHELFICEkappa,
                0047      &     SHELFICElatentHeat, SHELFICEHeatCapacity_Cp,
abcbe3b2bf Jean*0048      &     no_slip_shelfice, SHELFICEDragLinear,
                0049      &     SHELFICEDragQuadratic, SHELFICEselectDragQuadr,
00f81e6785 Ou W*0050      &     SHELFICEthetaSurface, SHELFICEsalinity,
abcbe3b2bf Jean*0051      &     useISOMIPTD,
71125c711d Mart*0052      &     SHELFICEconserve, SHELFICEboundaryLayer,
9952f046d7 dngo*0053      &     SHI_withBL_realFWflux, SHI_withBL_uStarTopDz,
ffe464dc7d Mart*0054      &     SHELFICEwriteState,
                0055      &     SHELFICE_dumpFreq,
                0056      &     SHELFICE_taveFreq,
                0057      &     SHELFICE_tave_mnc,
6247293a5a Mart*0058      &     SHELFICE_dump_mnc,
9c84481760 Jean*0059      &     SHELFICEtopoFile,
                0060      &     SHELFICEmassFile, SHELFICEloadAnomalyFile,
4014d9eb9b Dimi*0061      &     SHELFICEMassDynTendFile, SHELFICETransCoeffTFile,
542be861d2 Dani*0062      &     SHELFICEDynMassOnly,
37e32ac0e0 Mart*0063      &     SHELFICEadvDiffHeatFlux,
b06dffee6b Jean*0064      &     SHELFICEuseGammaFrict, SHELFICE_oldCalcUStar,
99068806b1 Patr*0065      &     shiCdrag, shiZetaN, shiRc,
9952f046d7 dngo*0066      &     shiPrandtl, shiSchmidt, shiKinVisc,
359d9ec3d7 Patr*0067 #ifdef ALLOW_COST
9952f046d7 dngo*0068      &     mult_shelfice,
                0069      &     mult_shifwflx, wshifwflx0, shifwflx_errfile,
359d9ec3d7 Patr*0070 #endif
9952f046d7 dngo*0071      &     SHELFICEremeshFrequency,
                0072      &     SHELFICEsplitThreshold, SHELFICEmergeThreshold
ffe464dc7d Mart*0073 
ae4c29e0db Jean*0074 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0075 
                0076       IF ( .NOT.useShelfIce ) THEN
                0077 C-    pkg SHELFICE is not used
                0078         _BEGIN_MASTER(myThid)
                0079 C-    Track pkg activation status:
a00f55baae Jean*0080          SHELFICEisOn = .FALSE.
ae4c29e0db Jean*0081 C     print a (weak) warning if data.shelfice is found
                0082          CALL PACKAGES_UNUSED_MSG( 'useShelfIce', ' ', ' ' )
                0083         _END_MASTER(myThid)
                0084         RETURN
                0085       ENDIF
                0086 
a93eea6699 Jean*0087       _BEGIN_MASTER(myThid)
                0088 
ffe464dc7d Mart*0089 C This routine has been called by the main model so we set our
                0090 C internal flag to indicate we are in business
a0178c5a01 Jean*0091       SHELFICEisOn = .TRUE.
ffe464dc7d Mart*0092 
                0093 C Set defaults values for parameters in SHELFICE.h
17292dde13 Mart*0094       useISOMIPTD              = .FALSE.
71125c711d Mart*0095       SHELFICEconserve         = .FALSE.
40b188dddd Mart*0096       SHELFICEboundaryLayer    = .FALSE.
9952f046d7 dngo*0097       SHI_withBL_realFWflux    = .FALSE.
                0098       SHI_withBL_uStarTopDz    = .FALSE.
a0178c5a01 Jean*0099       SHELFICEMassStepping     = .FALSE.
005af54e38 Jean*0100 #ifdef ALLOW_SHELFICE_REMESHING
                0101       SHI_update_kTopC         = .TRUE.
                0102 #else
                0103       SHI_update_kTopC         = .FALSE.
                0104 #endif
542be861d2 Dani*0105       SHELFICEDynMassOnly      = .FALSE.
8194bc4a99 Mart*0106       SHELFICEtopoFile         = ' '
9c84481760 Jean*0107       SHELFICEmassFile         = ' '
                0108       SHELFICEloadAnomalyFile  = ' '
a0178c5a01 Jean*0109       SHELFICEMassDynTendFile  = ' '
4014d9eb9b Dimi*0110       SHELFICETransCoeffTFile  = ' '
17292dde13 Mart*0111       SHELFICElatentHeat       =  334.0 _d 3
                0112       SHELFICEHeatCapacity_Cp  = 2000.0 _d 0
                0113       rhoShelfIce              =  917.0 _d 0
7b8b86ab99 Timo*0114       SHELFICEsaltToHeatRatio  =   5.05 _d -03
17292dde13 Mart*0115       SHELFICEheatTransCoeff   =    1.0 _d -04
                0116       SHELFICEsaltTransCoeff   = UNSET_RL
00f81e6785 Ou W*0117 C--   Molecular thermal conductivity ice shelf (m^2/s)
17292dde13 Mart*0118       SHELFICEkappa            =   1.54 _d -06
                0119       SHELFICEthetaSurface     = - 20.0 _d 0
00f81e6785 Ou W*0120       SHELFICEsalinity         = 0.0 _d 0
ffe464dc7d Mart*0121       no_slip_shelfice         = no_slip_bottom
                0122       SHELFICEDragLinear       = bottomDragLinear
c1ea362d1d Patr*0123       SHELFICEDragQuadratic    = UNSET_RL
d1e8335be4 Jean*0124       SHELFICEselectDragQuadr  = -1
ffe464dc7d Mart*0125       SHELFICEwriteState       = .FALSE.
                0126       SHELFICE_dumpFreq        = dumpFreq
                0127       SHELFICE_taveFreq        = taveFreq
37e32ac0e0 Mart*0128       SHELFICEadvDiffHeatFlux  = .FALSE.
e4305b0f18 Patr*0129       SHELFICEuseGammaFrict    = .FALSE.
b06dffee6b Jean*0130       SHELFICE_oldCalcUStar    = .FALSE.
9952f046d7 dngo*0131       SHELFICEremeshFrequency  = 0.
                0132       SHELFICEsplitThreshold   = hFacMin*1.1 _d 0 + 1. _d 0
                0133       SHELFICEmergeThreshold   = hFacMin*0.9 _d 0
99068806b1 Patr*0134 C these params. are default of Holland and Jenkins (1999)
e4305b0f18 Patr*0135       shiCdrag                 = 0.0015 _d 0
                0136       shiZetaN                 = 0.052 _d 0
                0137       shiRc                    = 0.2 _d 0
99068806b1 Patr*0138       shiPrandtl               = 13.8 _d 0
                0139       shiSchmidt               = 2432.0 _d 0
                0140       shiKinVisc               = 1.95 _d -6
359d9ec3d7 Patr*0141 #ifdef ALLOW_COST
                0142       mult_shelfice            = 0. _d 0
abed653eb5 Mart*0143       mult_shifwflx            = 0. _d 0
                0144       wshifwflx0               = 0. _d 0
                0145       shifwflx_errfile         = ' '
359d9ec3d7 Patr*0146 #endif
ffe464dc7d Mart*0147 #ifdef ALLOW_MNC
                0148       SHELFICE_tave_mnc = timeave_mnc
                0149       SHELFICE_dump_mnc = snapshot_mnc
                0150 #else
                0151       SHELFICE_tave_mnc = .FALSE.
                0152       SHELFICE_dump_mnc = .FALSE.
                0153 #endif
                0154 
                0155 C Open and read the data.shelfice file
                0156       WRITE(msgBuf,'(A)') ' SHELFICE_READPARMS: opening data.shelfice'
                0157       CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0158      &                   SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0159       CALL OPEN_COPY_DATA_FILE(
                0160      I                   'data.shelfice', 'SHELFICE_READPARMS',
                0161      O                   iUnit,
                0162      I                   myThid )
                0163       READ(UNIT=iUnit,NML=SHELFICE_PARM01)
                0164       WRITE(msgBuf,'(A)')
                0165      &  ' SHELFICE_READPARMS: finished reading data.shelfice'
                0166       CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0167      &                   SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0168 
                0169 C Close the open data file
7a77863887 Mart*0170 #ifdef SINGLE_DISK_IO
ffe464dc7d Mart*0171       CLOSE(iUnit)
7a77863887 Mart*0172 #else
                0173       CLOSE(iUnit,STATUS='DELETE')
                0174 #endif /* SINGLE_DISK_IO */
ffe464dc7d Mart*0175 
a93eea6699 Jean*0176 C Now set-up any remaining parameters that result from the input parameters
17292dde13 Mart*0177       IF ( SHELFICEsaltTransCoeff .EQ. UNSET_RL )
a93eea6699 Jean*0178      &     SHELFICEsaltTransCoeff =
7b8b86ab99 Timo*0179      &     SHELFICEsaltToHeatRatio * SHELFICEheatTransCoeff
ffe464dc7d Mart*0180 
b06dffee6b Jean*0181 C New calcUstar expression not available with SHELFICEboundaryLayer:
                0182       IF ( SHELFICEboundaryLayer ) SHELFICE_oldCalcUStar = .TRUE.
9952f046d7 dngo*0183 C  specific options within SHELFICEboundaryLayer:
                0184       SHI_withBL_realFWflux = SHI_withBL_realFWflux .AND.
                0185      &    SHELFICEboundaryLayer .AND. useRealFreshWaterFlux
                0186       SHI_withBL_uStarTopDz = SHI_withBL_uStarTopDz .AND.
                0187      &    SHELFICEboundaryLayer .AND. SHELFICEuseGammaFrict
b06dffee6b Jean*0188 
c1ea362d1d Patr*0189 C Set quadratic bottom drag depending on choices:
                0190       IF ( SHELFICEDragQuadratic .EQ. UNSET_RL) THEN
                0191        IF ( SHELFICEuseGammaFrict ) THEN
142816d65e Patr*0192         SHELFICEDragQuadratic = shiCdrag
                0193        ELSE
                0194         SHELFICEDragQuadratic = bottomDragQuadratic
                0195        ENDIF
c1ea362d1d Patr*0196       ENDIF
d1e8335be4 Jean*0197       IF ( SHELFICEDragQuadratic.EQ.0. _d 0 ) THEN
                0198         SHELFICEselectDragQuadr = -1
                0199       ELSEIF ( SHELFICEselectDragQuadr.EQ.-1 ) THEN
                0200         SHELFICEselectDragQuadr = MAX( 0, selectBotDragQuadr )
                0201       ENDIF
c1ea362d1d Patr*0202 
005af54e38 Jean*0203 C-    reset SHI_update_kTopC to avoid having to test for both:
                0204       SHI_update_kTopC = SHI_update_kTopC .AND. SHELFICEMassStepping
                0205 
ffe464dc7d Mart*0206 C-    Set Output type flags :
                0207       SHELFICE_tave_mdsio = .TRUE.
                0208       SHELFICE_dump_mdsio = .TRUE.
                0209 #ifdef ALLOW_MNC
                0210       IF (useMNC) THEN
                0211         IF ( .NOT.outputTypesInclusive
                0212      &       .AND. SHELFICE_tave_mnc ) SHELFICE_tave_mdsio = .FALSE.
                0213         IF ( .NOT.outputTypesInclusive
                0214      &       .AND. SHELFICE_dump_mnc ) SHELFICE_dump_mdsio = .FALSE.
                0215       ENDIF
                0216 #endif
                0217 
a93eea6699 Jean*0218       _END_MASTER(myThid)
                0219 C Everyone else must wait for the parameters to be loaded
                0220       _BARRIER
                0221 
ffe464dc7d Mart*0222 #endif /* ALLOW_SHELFICE */
                0223 
                0224       RETURN
                0225       END