File indexing completed on 2024-01-13 06:10:45 UTC
view on githubraw file Latest commit 005af54e on 2024-01-12 20:10:27 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,
17292dde13 Mart*0050 & SHELFICEthetaSurface,
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
0117 SHELFICEkappa = 1.54 _d -06
0118 SHELFICEthetaSurface = - 20.0 _d 0
ffe464dc7d Mart*0119 no_slip_shelfice = no_slip_bottom
0120 SHELFICEDragLinear = bottomDragLinear
c1ea362d1d Patr*0121 SHELFICEDragQuadratic = UNSET_RL
d1e8335be4 Jean*0122 SHELFICEselectDragQuadr = -1
ffe464dc7d Mart*0123 SHELFICEwriteState = .FALSE.
0124 SHELFICE_dumpFreq = dumpFreq
0125 SHELFICE_taveFreq = taveFreq
37e32ac0e0 Mart*0126 SHELFICEadvDiffHeatFlux = .FALSE.
e4305b0f18 Patr*0127 SHELFICEuseGammaFrict = .FALSE.
b06dffee6b Jean*0128 SHELFICE_oldCalcUStar = .FALSE.
9952f046d7 dngo*0129 SHELFICEremeshFrequency = 0.
0130 SHELFICEsplitThreshold = hFacMin*1.1 _d 0 + 1. _d 0
0131 SHELFICEmergeThreshold = hFacMin*0.9 _d 0
99068806b1 Patr*0132
e4305b0f18 Patr*0133 shiCdrag = 0.0015 _d 0
0134 shiZetaN = 0.052 _d 0
0135 shiRc = 0.2 _d 0
99068806b1 Patr*0136 shiPrandtl = 13.8 _d 0
0137 shiSchmidt = 2432.0 _d 0
0138 shiKinVisc = 1.95 _d -6
359d9ec3d7 Patr*0139 #ifdef ALLOW_COST
0140 mult_shelfice = 0. _d 0
abed653eb5 Mart*0141 mult_shifwflx = 0. _d 0
0142 wshifwflx0 = 0. _d 0
0143 shifwflx_errfile = ' '
359d9ec3d7 Patr*0144 #endif
ffe464dc7d Mart*0145 #ifdef ALLOW_MNC
0146 SHELFICE_tave_mnc = timeave_mnc
0147 SHELFICE_dump_mnc = snapshot_mnc
0148 #else
0149 SHELFICE_tave_mnc = .FALSE.
0150 SHELFICE_dump_mnc = .FALSE.
0151 #endif
0152
0153
0154 WRITE(msgBuf,'(A)') ' SHELFICE_READPARMS: opening data.shelfice'
0155 CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0156 & SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0157 CALL OPEN_COPY_DATA_FILE(
0158 I 'data.shelfice', 'SHELFICE_READPARMS',
0159 O iUnit,
0160 I myThid )
0161 READ(UNIT=iUnit,NML=SHELFICE_PARM01)
0162 WRITE(msgBuf,'(A)')
0163 & ' SHELFICE_READPARMS: finished reading data.shelfice'
0164 CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
a93eea6699 Jean*0165 & SQUEEZE_RIGHT, myThid )
ffe464dc7d Mart*0166
0167
7a77863887 Mart*0168 #ifdef SINGLE_DISK_IO
ffe464dc7d Mart*0169 CLOSE(iUnit)
7a77863887 Mart*0170 #else
0171 CLOSE(iUnit,STATUS='DELETE')
0172 #endif /* SINGLE_DISK_IO */
ffe464dc7d Mart*0173
a93eea6699 Jean*0174
17292dde13 Mart*0175 IF ( SHELFICEsaltTransCoeff .EQ. UNSET_RL )
a93eea6699 Jean*0176 & SHELFICEsaltTransCoeff =
7b8b86ab99 Timo*0177 & SHELFICEsaltToHeatRatio * SHELFICEheatTransCoeff
ffe464dc7d Mart*0178
b06dffee6b Jean*0179
0180 IF ( SHELFICEboundaryLayer ) SHELFICE_oldCalcUStar = .TRUE.
9952f046d7 dngo*0181
0182 SHI_withBL_realFWflux = SHI_withBL_realFWflux .AND.
0183 & SHELFICEboundaryLayer .AND. useRealFreshWaterFlux
0184 SHI_withBL_uStarTopDz = SHI_withBL_uStarTopDz .AND.
0185 & SHELFICEboundaryLayer .AND. SHELFICEuseGammaFrict
b06dffee6b Jean*0186
c1ea362d1d Patr*0187
0188 IF ( SHELFICEDragQuadratic .EQ. UNSET_RL) THEN
0189 IF ( SHELFICEuseGammaFrict ) THEN
142816d65e Patr*0190 SHELFICEDragQuadratic = shiCdrag
0191 ELSE
0192 SHELFICEDragQuadratic = bottomDragQuadratic
0193 ENDIF
c1ea362d1d Patr*0194 ENDIF
d1e8335be4 Jean*0195 IF ( SHELFICEDragQuadratic.EQ.0. _d 0 ) THEN
0196 SHELFICEselectDragQuadr = -1
0197 ELSEIF ( SHELFICEselectDragQuadr.EQ.-1 ) THEN
0198 SHELFICEselectDragQuadr = MAX( 0, selectBotDragQuadr )
0199 ENDIF
c1ea362d1d Patr*0200
005af54e38 Jean*0201
0202 SHI_update_kTopC = SHI_update_kTopC .AND. SHELFICEMassStepping
0203
ffe464dc7d Mart*0204
0205 SHELFICE_tave_mdsio = .TRUE.
0206 SHELFICE_dump_mdsio = .TRUE.
0207 #ifdef ALLOW_MNC
0208 IF (useMNC) THEN
0209 IF ( .NOT.outputTypesInclusive
0210 & .AND. SHELFICE_tave_mnc ) SHELFICE_tave_mdsio = .FALSE.
0211 IF ( .NOT.outputTypesInclusive
0212 & .AND. SHELFICE_dump_mnc ) SHELFICE_dump_mdsio = .FALSE.
0213 ENDIF
0214 #endif
0215
a93eea6699 Jean*0216 _END_MASTER(myThid)
0217
0218 _BARRIER
0219
ffe464dc7d Mart*0220 #endif /* ALLOW_SHELFICE */
0221
0222 RETURN
0223 END