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
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
0039
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
0075
0076 IF ( .NOT.useShelfIce ) THEN
0077
0078 _BEGIN_MASTER(myThid)
0079
a00f55baae Jean*0080 SHELFICEisOn = .FALSE.
ae4c29e0db Jean*0081
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
0090
a0178c5a01 Jean*0091 SHELFICEisOn = .TRUE.
ffe464dc7d Mart*0092
0093
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
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
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
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
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
17292dde13 Mart*0177 IF ( SHELFICEsaltTransCoeff .EQ. UNSET_RL )
a93eea6699 Jean*0178 & SHELFICEsaltTransCoeff =
7b8b86ab99 Timo*0179 & SHELFICEsaltToHeatRatio * SHELFICEheatTransCoeff
ffe464dc7d Mart*0180
b06dffee6b Jean*0181
0182 IF ( SHELFICEboundaryLayer ) SHELFICE_oldCalcUStar = .TRUE.
9952f046d7 dngo*0183
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
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
0204 SHI_update_kTopC = SHI_update_kTopC .AND. SHELFICEMassStepping
0205
ffe464dc7d Mart*0206
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
0220 _BARRIER
0221
ffe464dc7d Mart*0222 #endif /* ALLOW_SHELFICE */
0223
0224 RETURN
0225 END