File indexing completed on 2025-11-07 06:08:51 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
ffe464dc7d Mart*0001 #include "SHELFICE_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE SHELFICE_READPARMS( myThid )
0008
0009
0010
0011
0012
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
0026
0027 INTEGER myThid
0028
0029
0030
0031
0032 #ifdef ALLOW_SHELFICE
0033
0034
bee329ac67 Jean*0035
0036
ffe464dc7d Mart*0037 INTEGER iUnit
0038 CHARACTER*(MAX_LEN_MBUF) msgBuf
b7411f1a84 Jean*0039
0040 _RL SHELFICE_taveFreq
0041 LOGICAL SHELFICE_tave_mnc
ffe464dc7d Mart*0042
0043
0044 NAMELIST /SHELFICE_PARM01/
7b8b86ab99 Timo*0045 & SHELFICEsaltToHeatRatio,
17292dde13 Mart*0046 & SHELFICEheatTransCoeff,
0047 & SHELFICEsaltTransCoeff,
005af54e38 Jean*0048 & SHELFICEMassStepping, SHI_update_kTopC,
17292dde13 Mart*0049 & rhoShelfice, SHELFICEkappa,
0050 & SHELFICElatentHeat, SHELFICEHeatCapacity_Cp,
abcbe3b2bf Jean*0051 & no_slip_shelfice, SHELFICEDragLinear,
0052 & SHELFICEDragQuadratic, SHELFICEselectDragQuadr,
00f81e6785 Ou W*0053 & SHELFICEthetaSurface, SHELFICEsalinity,
abcbe3b2bf Jean*0054 & useISOMIPTD,
71125c711d Mart*0055 & SHELFICEconserve, SHELFICEboundaryLayer,
9952f046d7 dngo*0056 & SHI_withBL_realFWflux, SHI_withBL_uStarTopDz,
ffe464dc7d Mart*0057 & SHELFICEwriteState,
0058 & SHELFICE_dumpFreq,
0059 & SHELFICE_taveFreq,
0060 & SHELFICE_tave_mnc,
6247293a5a Mart*0061 & SHELFICE_dump_mnc,
9c84481760 Jean*0062 & SHELFICEtopoFile,
0063 & SHELFICEmassFile, SHELFICEloadAnomalyFile,
4014d9eb9b Dimi*0064 & SHELFICEMassDynTendFile, SHELFICETransCoeffTFile,
542be861d2 Dani*0065 & SHELFICEDynMassOnly,
37e32ac0e0 Mart*0066 & SHELFICEadvDiffHeatFlux,
b06dffee6b Jean*0067 & SHELFICEuseGammaFrict, SHELFICE_oldCalcUStar,
99068806b1 Patr*0068 & shiCdrag, shiZetaN, shiRc,
9952f046d7 dngo*0069 & shiPrandtl, shiSchmidt, shiKinVisc,
359d9ec3d7 Patr*0070 #ifdef ALLOW_COST
9952f046d7 dngo*0071 & mult_shelfice,
0072 & mult_shifwflx, wshifwflx0, shifwflx_errfile,
359d9ec3d7 Patr*0073 #endif
9952f046d7 dngo*0074 & SHELFICEremeshFrequency,
0075 & SHELFICEsplitThreshold, SHELFICEmergeThreshold
ffe464dc7d Mart*0076
ae4c29e0db Jean*0077
0078
0079 IF ( .NOT.useShelfIce ) THEN
0080
0081 _BEGIN_MASTER(myThid)
0082
a00f55baae Jean*0083 SHELFICEisOn = .FALSE.
ae4c29e0db Jean*0084
0085 CALL PACKAGES_UNUSED_MSG( 'useShelfIce', ' ', ' ' )
0086 _END_MASTER(myThid)
0087 RETURN
0088 ENDIF
0089
a93eea6699 Jean*0090 _BEGIN_MASTER(myThid)
0091
ffe464dc7d Mart*0092
0093
a0178c5a01 Jean*0094 SHELFICEisOn = .TRUE.
ffe464dc7d Mart*0095
0096
17292dde13 Mart*0097 useISOMIPTD = .FALSE.
71125c711d Mart*0098 SHELFICEconserve = .FALSE.
40b188dddd Mart*0099 SHELFICEboundaryLayer = .FALSE.
9952f046d7 dngo*0100 SHI_withBL_realFWflux = .FALSE.
0101 SHI_withBL_uStarTopDz = .FALSE.
a0178c5a01 Jean*0102 SHELFICEMassStepping = .FALSE.
005af54e38 Jean*0103 #ifdef ALLOW_SHELFICE_REMESHING
0104 SHI_update_kTopC = .TRUE.
0105 #else
0106 SHI_update_kTopC = .FALSE.
0107 #endif
542be861d2 Dani*0108 SHELFICEDynMassOnly = .FALSE.
8194bc4a99 Mart*0109 SHELFICEtopoFile = ' '
9c84481760 Jean*0110 SHELFICEmassFile = ' '
0111 SHELFICEloadAnomalyFile = ' '
a0178c5a01 Jean*0112 SHELFICEMassDynTendFile = ' '
4014d9eb9b Dimi*0113 SHELFICETransCoeffTFile = ' '
17292dde13 Mart*0114 SHELFICElatentHeat = 334.0 _d 3
0115 SHELFICEHeatCapacity_Cp = 2000.0 _d 0
0116 rhoShelfIce = 917.0 _d 0
7b8b86ab99 Timo*0117 SHELFICEsaltToHeatRatio = 5.05 _d -03
17292dde13 Mart*0118 SHELFICEheatTransCoeff = 1.0 _d -04
0119 SHELFICEsaltTransCoeff = UNSET_RL
00f81e6785 Ou W*0120
17292dde13 Mart*0121 SHELFICEkappa = 1.54 _d -06
0122 SHELFICEthetaSurface = - 20.0 _d 0
00f81e6785 Ou W*0123 SHELFICEsalinity = 0.0 _d 0
ffe464dc7d Mart*0124 no_slip_shelfice = no_slip_bottom
0125 SHELFICEDragLinear = bottomDragLinear
c1ea362d1d Patr*0126 SHELFICEDragQuadratic = UNSET_RL
d1e8335be4 Jean*0127 SHELFICEselectDragQuadr = -1
ffe464dc7d Mart*0128 SHELFICEwriteState = .FALSE.
0129 SHELFICE_dumpFreq = dumpFreq
37e32ac0e0 Mart*0130 SHELFICEadvDiffHeatFlux = .FALSE.
e4305b0f18 Patr*0131 SHELFICEuseGammaFrict = .FALSE.
b06dffee6b Jean*0132 SHELFICE_oldCalcUStar = .FALSE.
9952f046d7 dngo*0133 SHELFICEremeshFrequency = 0.
0134 SHELFICEsplitThreshold = hFacMin*1.1 _d 0 + 1. _d 0
0135 SHELFICEmergeThreshold = hFacMin*0.9 _d 0
99068806b1 Patr*0136
e4305b0f18 Patr*0137 shiCdrag = 0.0015 _d 0
0138 shiZetaN = 0.052 _d 0
0139 shiRc = 0.2 _d 0
99068806b1 Patr*0140 shiPrandtl = 13.8 _d 0
0141 shiSchmidt = 2432.0 _d 0
0142 shiKinVisc = 1.95 _d -6
359d9ec3d7 Patr*0143 #ifdef ALLOW_COST
0144 mult_shelfice = 0. _d 0
abed653eb5 Mart*0145 mult_shifwflx = 0. _d 0
0146 wshifwflx0 = 0. _d 0
0147 shifwflx_errfile = ' '
359d9ec3d7 Patr*0148 #endif
ffe464dc7d Mart*0149 #ifdef ALLOW_MNC
0150 SHELFICE_dump_mnc = snapshot_mnc
0151 #else
0152 SHELFICE_dump_mnc = .FALSE.
0153 #endif
b7411f1a84 Jean*0154
0155 SHELFICE_taveFreq = UNSET_RL
0156 SHELFICE_tave_mnc = .FALSE.
ffe464dc7d Mart*0157
0158
0159 WRITE(msgBuf,'(A)') ' SHELFICE_READPARMS: opening data.shelfice'
0160 CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0161 & SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0162 CALL OPEN_COPY_DATA_FILE(
0163 I 'data.shelfice', 'SHELFICE_READPARMS',
0164 O iUnit,
0165 I myThid )
0166 READ(UNIT=iUnit,NML=SHELFICE_PARM01)
0167 WRITE(msgBuf,'(A)')
0168 & ' SHELFICE_READPARMS: finished reading data.shelfice'
0169 CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0170 & SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0171
0172
7a77863887 Mart*0173 #ifdef SINGLE_DISK_IO
ffe464dc7d Mart*0174 CLOSE(iUnit)
7a77863887 Mart*0175 #else
0176 CLOSE(iUnit,STATUS='DELETE')
0177 #endif /* SINGLE_DISK_IO */
ffe464dc7d Mart*0178
b7411f1a84 Jean*0179
0180
0181 IF ( SHELFICE_taveFreq .NE. UNSET_RL ) THEN
0182 WRITE(msgBuf,'(2A)') 'SHELFICE_READPARMS: "SHELFICE_taveFreq"',
0183 & ' is no longer allowed in file "data.shelfice"'
0184 CALL PRINT_ERROR( msgBuf, myThid )
0185 WRITE(msgBuf,'(2A)') 'SHELFICE_READPARMS: ',
0186 & ' since "pkg/timeave" has been removed.'
0187 CALL PRINT_ERROR( msgBuf, myThid )
0188
0189 STOP 'ABNORMAL END: S/R SHELFICE_READPARMS'
0190 ENDIF
0191 IF ( SHELFICE_tave_mnc ) THEN
0192 WRITE(msgBuf,'(2A)') 'SHELFICE_READPARMS: "SHELFICE_tave_mnc"',
0193 & ' is no longer allowed in file "data.shelfice"'
0194 CALL PRINT_ERROR( msgBuf, myThid )
0195 WRITE(msgBuf,'(2A)') 'SHELFICE_READPARMS: ',
0196 & ' since "pkg/timeave" has been removed.'
0197 CALL PRINT_ERROR( msgBuf, myThid )
0198
0199 STOP 'ABNORMAL END: S/R SHELFICE_READPARMS'
0200 ENDIF
0201
a93eea6699 Jean*0202
17292dde13 Mart*0203 IF ( SHELFICEsaltTransCoeff .EQ. UNSET_RL )
a93eea6699 Jean*0204 & SHELFICEsaltTransCoeff =
7b8b86ab99 Timo*0205 & SHELFICEsaltToHeatRatio * SHELFICEheatTransCoeff
ffe464dc7d Mart*0206
b06dffee6b Jean*0207
0208 IF ( SHELFICEboundaryLayer ) SHELFICE_oldCalcUStar = .TRUE.
9952f046d7 dngo*0209
0210 SHI_withBL_realFWflux = SHI_withBL_realFWflux .AND.
0211 & SHELFICEboundaryLayer .AND. useRealFreshWaterFlux
0212 SHI_withBL_uStarTopDz = SHI_withBL_uStarTopDz .AND.
0213 & SHELFICEboundaryLayer .AND. SHELFICEuseGammaFrict
b06dffee6b Jean*0214
c1ea362d1d Patr*0215
0216 IF ( SHELFICEDragQuadratic .EQ. UNSET_RL) THEN
0217 IF ( SHELFICEuseGammaFrict ) THEN
142816d65e Patr*0218 SHELFICEDragQuadratic = shiCdrag
0219 ELSE
0220 SHELFICEDragQuadratic = bottomDragQuadratic
0221 ENDIF
c1ea362d1d Patr*0222 ENDIF
d1e8335be4 Jean*0223 IF ( SHELFICEDragQuadratic.EQ.0. _d 0 ) THEN
0224 SHELFICEselectDragQuadr = -1
0225 ELSEIF ( SHELFICEselectDragQuadr.EQ.-1 ) THEN
0226 SHELFICEselectDragQuadr = MAX( 0, selectBotDragQuadr )
0227 ENDIF
c1ea362d1d Patr*0228
005af54e38 Jean*0229
0230 SHI_update_kTopC = SHI_update_kTopC .AND. SHELFICEMassStepping
0231
ffe464dc7d Mart*0232
0233 SHELFICE_dump_mdsio = .TRUE.
0234 #ifdef ALLOW_MNC
0235 IF (useMNC) THEN
0236 IF ( .NOT.outputTypesInclusive
0237 & .AND. SHELFICE_dump_mnc ) SHELFICE_dump_mdsio = .FALSE.
0238 ENDIF
0239 #endif
0240
a93eea6699 Jean*0241 _END_MASTER(myThid)
0242
0243 _BARRIER
0244
ffe464dc7d Mart*0245 #endif /* ALLOW_SHELFICE */
0246
0247 RETURN
0248 END