File indexing completed on 2018-03-02 18:44:32 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
fc7306ba7d Jean*0001 #include "THSICE_OPTIONS.h"
0002
87ea84cac6 Jean*0003
0004
0005
fc7306ba7d Jean*0006 SUBROUTINE THSICE_READPARMS( myThid )
87ea84cac6 Jean*0007
0008
0009
0010
fc7306ba7d Jean*0011
87ea84cac6 Jean*0012
fc7306ba7d Jean*0013
87ea84cac6 Jean*0014
0015
0016
0017
fc7306ba7d Jean*0018 IMPLICIT NONE
0019
0020
0021 #include "SIZE.h"
0022 #include "EEPARAMS.h"
0023 #include "PARAMS.h"
0024 #include "GRID.h"
0025 #include "THSICE_PARAMS.h"
987916f561 Jean*0026 #ifdef ALLOW_MNC
0027 #include "MNC_PARAMS.h"
0028 #endif
6c747cb1b2 Patr*0029 #ifdef ALLOW_COST
0030 #include "THSICE_COST.h"
0031 #endif
87ea84cac6 Jean*0032
fc7306ba7d Jean*0033
49d6795014 Jean*0034
fc7306ba7d Jean*0035 INTEGER myThid
87ea84cac6 Jean*0036
fc7306ba7d Jean*0037
0038 #ifdef ALLOW_THSICE
0039
0040
49d6795014 Jean*0041
0042
fc7306ba7d Jean*0043 CHARACTER*(MAX_LEN_MBUF) msgBuf
e40ff4922c Jean*0044 CHARACTER*(20) fmtR, fmtI, fmtL, fmtC
fc7306ba7d Jean*0045 INTEGER iUnit
0046
0047
0048 NAMELIST /THSICE_CONST/
0049 & rhos, rhoi, rhosw, rhofw,
c2c29a499f Jean*0050 & cpIce, cpWater,
0051 & kIce, kSnow,
0052 & bMeltCoef, Lfresh, qsnow,
c854f591d1 Jean*0053 & albColdSnow, albWarmSnow, tempSnowAlb,
0054 & albOldSnow, hNewSnowAge, snowAgTime,
fcd60511e1 Jean*0055 & albIceMax, albIceMin, hAlbIce, hAlbSnow,
c2c29a499f Jean*0056 & i0swFrac, ksolar, dhSnowLin,
0057 & saltIce, S_winton, mu_Tf,
0058 & Tf0kel, Terrmax, nitMaxTsf,
0059 & hIceMin, hiMax, hsMax, iceMaskMax, iceMaskMin,
0060 & fracEnMelt, fracEnFreez, hThinIce, hThickIce, hNewIceMax
7269783f6f Jean*0061
fc7306ba7d Jean*0062 NAMELIST /THSICE_PARM01/
ce354ad541 Jean*0063 & startIceModel, stepFwd_oceMxL, thSIce_calc_albNIR,
8a23e1b5d8 Jean*0064 & thSIce_skipThermo, thSIce_deltaT, thSIce_dtTemp,
7c5790770d Davi*0065 & ocean_deltaT, tauRelax_MxL, tauRelax_MxL_salt,
df4e8f7bcf Ed H*0066 & hMxL_default, sMxL_default, vMxL_default,
49d6795014 Jean*0067 & thSIce_diffK, thSIceAdvScheme, stressReduction,
e40ff4922c Jean*0068 & thSIceBalanceAtmFW,
df4e8f7bcf Ed H*0069 & thSIce_taveFreq, thSIce_diagFreq, thSIce_monFreq,
0070 & thSIce_tave_mnc, thSIce_snapshot_mnc, thSIce_mon_mnc,
0071 & thSIce_pickup_read_mnc, thSIce_pickup_write_mnc,
0072 & thSIceFract_InitFile, thSIceThick_InitFile,
0073 & thSIceSnowH_InitFile, thSIceSnowA_InitFile,
0074 & thSIceEnthp_InitFile, thSIceTsurf_InitFile
fc7306ba7d Jean*0075
6c747cb1b2 Patr*0076 #ifdef ALLOW_COST
0077 NAMELIST /THSICE_COST/
0078 & mult_thsice, thsice_cost_ice_flag
0079 #endif
0080
ae4c29e0db Jean*0081
0082
0083 IF ( .NOT.useThSIce ) THEN
0084
0085 _BEGIN_MASTER(myThid)
0086
0087
0088 CALL PACKAGES_UNUSED_MSG( 'useThSIce', ' ', 'ice' )
0089 _END_MASTER(myThid)
0090 RETURN
0091 ENDIF
0092
fc7306ba7d Jean*0093 _BEGIN_MASTER(myThid)
0094
0095 WRITE(msgBuf,'(A)') ' THSICE_READPARMS: opening data.ice'
0096 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0097 & SQUEEZE_RIGHT , 1)
7269783f6f Jean*0098
fc7306ba7d Jean*0099 CALL OPEN_COPY_DATA_FILE(
0100 I 'data.ice', 'THSICE_READPARMS',
0101 O iUnit,
0102 I myThid )
0103
0104
0105 rhos = 330. _d 0
0106 rhoi = 900. _d 0
0107 rhosw = rhoConst
0108 rhofw = rhoConstFresh
c2c29a499f Jean*0109 cpIce = 2106. _d 0
0110 cpWater = HeatCapacity_Cp
0111 kIce = 2.03 _d 0
0112 kSnow = 0.30 _d 0
0113 bMeltCoef=0.006 _d 0
fc7306ba7d Jean*0114 Lfresh = 3.34 _d 5
0115 qsnow = Lfresh
fcd60511e1 Jean*0116 albColdSnow= 0.85 _d 0
0117 albWarmSnow= 0.70 _d 0
c854f591d1 Jean*0118 tempSnowAlb= -10. _d 0
fcd60511e1 Jean*0119 albOldSnow = 0.55 _d 0
0120 albIceMax = 0.65 _d 0
0121 albIceMin = 0.20 _d 0
0122 hAlbIce = 0.50 _d 0
0123 hAlbSnow = 0.30 _d 0
0124 hNewSnowAge= 2. _d -3
7269783f6f Jean*0125 snowAgTime = 50. _d 0 * 86400. _d 0
c2c29a499f Jean*0126 i0swFrac = 0.3 _d 0
fc7306ba7d Jean*0127 ksolar = 1.5 _d 0
c2c29a499f Jean*0128 dhSnowLin= 0. _d 0
0129 saltIce = 4. _d 0
fc7306ba7d Jean*0130 S_winton = 1. _d 0
0131 mu_Tf = 0.054 _d 0
0132 Tf0kel = celsius2K
0133 Terrmax = 5.0 _d -1
0134 nitMaxTsf= 20
c2c29a499f Jean*0135 hIceMin = 1. _d -2
fc7306ba7d Jean*0136 hiMax = 10. _d 0
0137 hsMax = 10. _d 0
c2c29a499f Jean*0138 iceMaskMax = 1. _d 0
0139 iceMaskMin = 0.1 _d 0
0140 fracEnMelt = 0.4 _d 0
0141 fracEnFreez= 0. _d 0
0142 hThinIce = 0.2 _d 0
0143 hThickIce = 2.5 _d 0
0144 hNewIceMax = UNSET_RL
fc7306ba7d Jean*0145
0146
87ea84cac6 Jean*0147 stepFwd_oceMxL = .FALSE.
8a23e1b5d8 Jean*0148 thSIce_skipThermo = .FALSE.
0149 thSIce_calc_albNIR = .FALSE.
87ea84cac6 Jean*0150 startIceModel = 0
dfc17c9c63 Jean*0151 thSIce_deltaT = dTtracerLev(1)
8a23e1b5d8 Jean*0152 thSIce_dtTemp = UNSET_RL
dfc17c9c63 Jean*0153 ocean_deltaT = dTtracerLev(1)
87ea84cac6 Jean*0154 tauRelax_MxL = 0. _d 0
7c5790770d Davi*0155 tauRelax_MxL_salt = UNSET_RL
87ea84cac6 Jean*0156 hMxL_default = 50. _d 0
0157 sMxL_default = 35. _d 0
0158 vMxL_default = 5. _d -2
49d6795014 Jean*0159 thSIce_diffK = 0. _d 0
0160 thSIceAdvScheme = 0
fc7306ba7d Jean*0161 stressReduction = 1. _d 0
b7ebc7bc01 Jean*0162 IF ( useSEAICE ) stressReduction = 0. _d 0
e40ff4922c Jean*0163 thSIceBalanceAtmFW = 0
7269783f6f Jean*0164 thSIce_taveFreq = taveFreq
fc7306ba7d Jean*0165 thSIce_diagFreq = dumpFreq
0166 thSIce_monFreq = monitorFreq
987916f561 Jean*0167 #ifdef ALLOW_MNC
df4e8f7bcf Ed H*0168 thSIce_tave_mnc = timeave_mnc
0169 thSIce_snapshot_mnc = snapshot_mnc
0170 thSIce_mon_mnc = monitor_mnc
0171 thSIce_pickup_read_mnc = pickup_read_mnc
0172 thSIce_pickup_write_mnc = pickup_write_mnc
987916f561 Jean*0173 #else
df4e8f7bcf Ed H*0174 thSIce_tave_mnc = .FALSE.
0175 thSIce_snapshot_mnc = .FALSE.
0176 thSIce_mon_mnc = .FALSE.
0177 thSIce_pickup_read_mnc = .FALSE.
0178 thSIce_pickup_write_mnc = .FALSE.
987916f561 Jean*0179 #endif
0180 thSIceFract_InitFile = ' '
0181 thSIceThick_InitFile = ' '
0182 thSIceSnowH_InitFile = ' '
0183 thSIceSnowA_InitFile = ' '
0184 thSIceEnthp_InitFile = ' '
0185 thSIceTsurf_InitFile = ' '
0186
6c747cb1b2 Patr*0187 #ifdef ALLOW_COST
0188 thsice_cost_ice_flag = 1
0189 mult_thsice = 0. _d 0
0190 #endif
fc7306ba7d Jean*0191
0192
0193 READ(UNIT=iUnit,NML=THSICE_CONST)
0194 WRITE(msgBuf,'(A)') ' THSICE_READPARMS: read THSICE_CONST'
0195 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0196 & SQUEEZE_RIGHT , 1)
0197
0198 READ(UNIT=iUnit,NML=THSICE_PARM01)
0199 WRITE(msgBuf,'(A)') ' THSICE_READPARMS: read THSICE_PARM01'
0200 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0201 & SQUEEZE_RIGHT , 1)
0202
6c747cb1b2 Patr*0203 #ifdef ALLOW_COST
0204 READ(UNIT=iUnit,NML=THSICE_COST)
fe7b013e2c Jean*0205 WRITE(msgBuf,'(A)') ' THSICE_READPARMS: read THSICE_COST'
6c747cb1b2 Patr*0206 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0207 & SQUEEZE_RIGHT , 1)
0208 #endif
0209
fc7306ba7d Jean*0210
7a77863887 Mart*0211 #ifdef SINGLE_DISK_IO
fc7306ba7d Jean*0212 CLOSE(iUnit)
7a77863887 Mart*0213 #else
0214 CLOSE(iUnit,STATUS='DELETE')
0215 #endif /* SINGLE_DISK_IO */
fc7306ba7d Jean*0216
c2c29a499f Jean*0217
0218 IF ( hNewIceMax .EQ. UNSET_RL ) hNewIceMax = hiMax
0219
2e83cb4d40 Jeff*0220
0221
0222 IF ( thSIce_dtTemp .EQ. UNSET_RL ) thSIce_dtTemp=thSIce_deltaT
0223
7c5790770d Davi*0224
0225 IF ( tauRelax_MxL_salt .EQ. UNSET_RL ) THEN
0226 tauRelax_MxL_salt = tauRelax_MxL
0227 ENDIF
0228
fc7306ba7d Jean*0229
0230 Tmlt1=-mu_Tf*S_winton
e6b6bab319 Davi*0231 floodFac = (rhosw - rhoi)/rhos
fc7306ba7d Jean*0232
df4e8f7bcf Ed H*0233
0234 thSIce_tave_mdsio = .TRUE.
0235 thSIce_snapshot_mdsio = .TRUE.
0236 thSIce_mon_stdio = .TRUE.
0237 thSIce_pickup_write_mdsio = .TRUE.
987916f561 Jean*0238 #ifdef ALLOW_MNC
0239 IF (useMNC) THEN
0240 IF ( .NOT.outputTypesInclusive
0241 & .AND. thSIce_tave_mnc ) thSIce_tave_mdsio = .FALSE.
7269783f6f Jean*0242 IF ( .NOT.outputTypesInclusive
0243 & .AND. thSIce_snapshot_mnc )
df4e8f7bcf Ed H*0244 & thSIce_snapshot_mdsio = .FALSE.
987916f561 Jean*0245 IF ( .NOT.outputTypesInclusive
0246 & .AND. thSIce_mon_mnc ) thSIce_mon_stdio = .FALSE.
df4e8f7bcf Ed H*0247 IF ( .NOT.outputTypesInclusive
7269783f6f Jean*0248 & .AND. thSIce_pickup_write_mnc )
df4e8f7bcf Ed H*0249 & thSIce_pickup_write_mdsio = .FALSE.
987916f561 Jean*0250 ENDIF
0251 #endif
0252
789e147860 Jean*0253
e40ff4922c Jean*0254
b7ebc7bc01 Jean*0255 IF ( useSEAICE .AND. stressReduction.NE.0. _d 0 ) THEN
0256
0257
e40ff4922c Jean*0258 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_READPARMS:',
0259 & ' reset stressReduction to zero'
b7ebc7bc01 Jean*0260 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
e40ff4922c Jean*0261 & SQUEEZE_RIGHT, myThid )
0262 WRITE(msgBuf,'(2A)') 'THSICE_READPARMS: useSEAICE=T =>',
0263 & ' stress is be computed by SEAICE pkg => no reduction'
b7ebc7bc01 Jean*0264 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
e40ff4922c Jean*0265 & SQUEEZE_RIGHT, myThid )
b7ebc7bc01 Jean*0266 stressReduction = 0. _d 0
0267 ENDIF
e40ff4922c Jean*0268 IF ( fluidIsAir .AND. thSIceBalanceAtmFW.NE.0 ) THEN
0269 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_READPARMS:',
0270 & ' reset thSIceBalanceAtmFW to zero'
0271 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0272 & SQUEEZE_RIGHT, myThid )
0273 WRITE(msgBuf,'(2A)') 'THSICE_READPARMS:',
0274 & ' since it is not available in Atmospheric set-up'
0275 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0276 & SQUEEZE_RIGHT, myThid )
0277 thSIceBalanceAtmFW = 0
0278 ENDIF
b7ebc7bc01 Jean*0279
fc7306ba7d Jean*0280
0281 iUnit = standardMessageUnit
e40ff4922c Jean*0282 fmtR = '(A6,A20,1PE21.13)'
0283 fmtI = '(A6,A20,I10)'
0284 fmtL = '(A6,A20,L10)'
0285 fmtC = '(A26,1X,A)'
ae4c29e0db Jean*0286
fc7306ba7d Jean*0287
e40ff4922c Jean*0288 WRITE(iUnit,fmtR) 'ThSI:', 'rhos =', rhos
0289 WRITE(iUnit,fmtR) 'ThSI:', 'rhoi =', rhoi
0290 WRITE(iUnit,fmtR) 'ThSI:', 'rhosw =', rhosw
0291 WRITE(iUnit,fmtR) 'ThSI:', 'rhofw =', rhofw
0292 WRITE(iUnit,fmtR) 'ThSI:', 'floodFac =', floodFac
0293 WRITE(iUnit,fmtR) 'ThSI:', 'cpIce =', cpIce
0294 WRITE(iUnit,fmtR) 'ThSI:', 'cpWater =', cpWater
0295 WRITE(iUnit,fmtR) 'ThSI:', 'kIce =', kIce
0296 WRITE(iUnit,fmtR) 'ThSI:', 'kSnow =', kSnow
0297 WRITE(iUnit,fmtR) 'ThSI:', 'bMeltCoef =', bMeltCoef
0298 WRITE(iUnit,fmtR) 'ThSI:', 'Lfresh =', Lfresh
0299 WRITE(iUnit,fmtR) 'ThSI:', 'qsnow =', qsnow
0300 WRITE(iUnit,fmtR) 'ThSI:', 'albColdSnow =', albColdSnow
0301 WRITE(iUnit,fmtR) 'ThSI:', 'albWarmSnow =', albWarmSnow
0302 WRITE(iUnit,fmtR) 'ThSI:', 'tempSnowAlb =', tempSnowAlb
0303 WRITE(iUnit,fmtR) 'ThSI:', 'albOldSnow =', albOldSnow
0304 WRITE(iUnit,fmtR) 'ThSI:', 'hNewSnowAge =', hNewSnowAge
0305 WRITE(iUnit,fmtR) 'ThSI:', 'snowAgTime =', snowAgTime
0306 WRITE(iUnit,fmtR) 'ThSI:', 'albIceMax =', albIceMax
0307 WRITE(iUnit,fmtR) 'ThSI:', 'albIceMin =', albIceMin
0308 WRITE(iUnit,fmtR) 'ThSI:', 'hAlbIce =', hAlbIce
0309 WRITE(iUnit,fmtR) 'ThSI:', 'hAlbSnow =', hAlbSnow
0310 WRITE(iUnit,fmtR) 'ThSI:', 'i0swFrac =', i0swFrac
0311 WRITE(iUnit,fmtR) 'ThSI:', 'ksolar =', ksolar
0312 WRITE(iUnit,fmtR) 'ThSI:', 'dhSnowLin =', dhSnowLin
0313 WRITE(iUnit,fmtR) 'ThSI:', 'saltIce =', saltIce
0314 WRITE(iUnit,fmtR) 'ThSI:', 'S_winton =', S_winton
0315 WRITE(iUnit,fmtR) 'ThSI:', 'mu_Tf =', mu_Tf
0316 WRITE(iUnit,fmtR) 'ThSI:', 'Tf0kel =', Tf0kel
0317 WRITE(iUnit,fmtR) 'ThSI:', 'Tmlt1 =', Tmlt1
0318 WRITE(iUnit,fmtR) 'ThSI:', 'Terrmax =', Terrmax
0319 WRITE(iUnit,fmtI) 'ThSI:', 'nitMaxTsf =', nitMaxTsf
0320 WRITE(iUnit,fmtR) 'ThSI:', 'hIceMin =', hIceMin
0321 WRITE(iUnit,fmtR) 'ThSI:', 'hiMax =', hiMax
0322 WRITE(iUnit,fmtR) 'ThSI:', 'hsMax =', hsMax
0323 WRITE(iUnit,fmtR) 'ThSI:', 'iceMaskMax =', iceMaskMax
0324 WRITE(iUnit,fmtR) 'ThSI:', 'iceMaskMin =', iceMaskMin
0325 WRITE(iUnit,fmtR) 'ThSI:', 'fracEnMelt =', fracEnMelt
0326 WRITE(iUnit,fmtR) 'ThSI:', 'fracEnFreez =', fracEnFreez
0327 WRITE(iUnit,fmtR) 'ThSI:', 'hThinIce =', hThinIce
0328 WRITE(iUnit,fmtR) 'ThSI:', 'hThickIce =', hThickIce
0329 WRITE(iUnit,fmtR) 'ThSI:', 'hNewIceMax =', hNewIceMax
0330 WRITE(iUnit,fmtR) 'ThSI:','stressReduction =',stressReduction
8a23e1b5d8 Jean*0331 WRITE(iUnit,fmtL) 'ThSI:','thSIce_skipThermo =',thSIce_skipThermo
e40ff4922c Jean*0332 WRITE(iUnit,fmtI) 'ThSI:','thSIceAdvScheme =',thSIceAdvScheme
0333 WRITE(iUnit,fmtI) 'ThSI:','thSIceBalanceAtmFW=',thSIceBalanceAtmFW
0334 WRITE(iUnit,fmtR) 'ThSI:','thSIce_diffK =',thSIce_diffK
0335 WRITE(iUnit,fmtR) 'ThSI:','thSIce_deltaT =',thSIce_deltaT
0336 WRITE(iUnit,fmtR) 'ThSI:','ocean_deltaT =',ocean_deltaT
0337 WRITE(iUnit,fmtL) 'ThSI:','stepFwd_oceMxL =',stepFwd_oceMxL
0338 WRITE(iUnit,fmtR) 'ThSI:','tauRelax_MxL =',tauRelax_MxL
0339 WRITE(iUnit,fmtR) 'ThSI:','tauRelax_MxL_salt =',tauRelax_MxL_salt
0340 WRITE(iUnit,fmtR) 'ThSI:','hMxL_default =',hMxL_default
0341 WRITE(iUnit,fmtR) 'ThSI:','sMxL_default =',sMxL_default
0342 WRITE(iUnit,fmtR) 'ThSI:','vMxL_default =',vMxL_default
0343 WRITE(iUnit,fmtR) 'ThSI:','thSIce_taveFreq =',thSIce_taveFreq
0344 WRITE(iUnit,fmtR) 'ThSI:','thSIce_diagFreq =',thSIce_diagFreq
0345 WRITE(iUnit,fmtR) 'ThSI:','thSIce_monFreq =',thSIce_monFreq
0346 WRITE(iUnit,fmtI) 'ThSI:','startIceModel =',startIceModel
0347
987916f561 Jean*0348 IF (iUnit.NE.standardMessageUnit) CLOSE(iUnit)
fc7306ba7d Jean*0349
0350
0351 _END_MASTER(myThid)
0352
0353
0354 _BARRIER
0355
0356 #endif /* ALLOW_THSICE */
0357
0358 RETURN
0359 END