File indexing completed on 2025-11-07 06:08:38 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
e0a2f8aec4 Jean*0001 #include "LAND_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE LAND_READPARMS( myThid )
0007
0008
0009
0010
d2895c0628 Jean*0011
0012
e0a2f8aec4 Jean*0013
0014
3a10a8cfd8 Jean*0015
e0a2f8aec4 Jean*0016
0017 IMPLICIT NONE
0018
0019
0020
0021 #include "LAND_SIZE.h"
0022
0023 #include "EEPARAMS.h"
0024 #include "PARAMS.h"
0025 #include "LAND_PARAMS.h"
cf701ea57b Ed H*0026 #ifdef ALLOW_MNC
d2895c0628 Jean*0027 # include "MNC_PARAMS.h"
cf701ea57b Ed H*0028 #endif
e0a2f8aec4 Jean*0029
0030
d2895c0628 Jean*0031
e0a2f8aec4 Jean*0032 INTEGER myThid
0033
0034 #ifdef ALLOW_LAND
d2895c0628 Jean*0035
0036
e0a2f8aec4 Jean*0037
0038
b7411f1a84 Jean*0039
e0a2f8aec4 Jean*0040 CHARACTER*(MAX_LEN_MBUF) msgBuf
d2895c0628 Jean*0041 INTEGER iUnit, k
e0a2f8aec4 Jean*0042 _RL tmpvar
b7411f1a84 Jean*0043
0044 _RL land_taveFreq
0045 LOGICAL land_timeave_mnc
d2895c0628 Jean*0046
e0a2f8aec4 Jean*0047
0048
0049
0050
89992793c5 Jean*0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
e0a2f8aec4 Jean*0064 NAMELIST /LAND_MODEL_PAR/
3a10a8cfd8 Jean*0065 & land_calc_grT, land_calc_grW,
89992793c5 Jean*0066 & land_impl_grT, land_calc_snow,
3a10a8cfd8 Jean*0067 & land_calc_alb, land_oldPickup,
89992793c5 Jean*0068 & land_grT_iniFile, land_grW_iniFile, land_snow_iniFile,
0069 & land_deltaT, land_taveFreq, land_diagFreq, land_monFreq,
cf701ea57b Ed H*0070 & land_dzF,
3a10a8cfd8 Jean*0071 & land_timeave_mnc, land_snapshot_mnc, land_mon_mnc,
0072 & land_pickup_write_mnc, land_pickup_read_mnc
cf701ea57b Ed H*0073
e0a2f8aec4 Jean*0074
0075
89992793c5 Jean*0076
0077
e0a2f8aec4 Jean*0078
0079
0080
89992793c5 Jean*0081
0082
0083
b30f09edfc Jean*0084
0085
89992793c5 Jean*0086
0087
0088
0089
0090
0091
e0a2f8aec4 Jean*0092
0093 NAMELIST /LAND_PHYS_PAR/
89992793c5 Jean*0094 & land_grdLambda, land_heatCs, land_CpWater,
0095 & land_wTauDiff, land_waterCap, land_fractRunOff,
0096 & land_rhoLiqW,
3a10a8cfd8 Jean*0097 & land_rhoSnow, land_Lfreez,
b30f09edfc Jean*0098 & land_hMaxSnow, diffKsnow, timeSnowAge, hNewSnowAge,
1f792166dd Davi*0099 & albColdSnow, albWarmSnow, tempSnowAlbL, albOldSnow, hAlbSnow
e0a2f8aec4 Jean*0100
0101
0102
d2895c0628 Jean*0103 IF ( .NOT.useLand ) THEN
0104
0105 _BEGIN_MASTER(myThid)
0106
0107
0108 CALL PACKAGES_UNUSED_MSG( 'useLand', ' ', ' ' )
0109 _END_MASTER(myThid)
0110 RETURN
0111 ENDIF
0112
a9446a7f45 Jean*0113 _BEGIN_MASTER(myThid)
0114
e0a2f8aec4 Jean*0115
3a10a8cfd8 Jean*0116 land_calc_grT = .TRUE.
e0a2f8aec4 Jean*0117 land_calc_grW = .TRUE.
3a10a8cfd8 Jean*0118 land_impl_grT = .TRUE.
0119 land_calc_snow= .TRUE.
0120 land_calc_alb = .TRUE.
0121 land_oldPickup= .FALSE.
a8844d79c5 Jean*0122 land_grT_iniFile = ' '
0123 land_grW_iniFile = ' '
89992793c5 Jean*0124 land_snow_iniFile= ' '
b7411f1a84 Jean*0125 land_deltaT = deltaTClock
e0a2f8aec4 Jean*0126 land_diagFreq = dumpFreq
89992793c5 Jean*0127 land_monFreq = monitorFreq
cf701ea57b Ed H*0128 #ifdef ALLOW_MNC
0129 land_snapshot_mnc = snapshot_mnc .AND. useMNC
3a10a8cfd8 Jean*0130 land_mon_mnc = monitor_mnc .AND. useMNC
cf701ea57b Ed H*0131 land_pickup_write_mnc = pickup_write_mnc .AND. useMNC
0132 land_pickup_read_mnc = pickup_read_mnc .AND. useMNC
0133 #else
0134 land_snapshot_mnc = .FALSE.
3a10a8cfd8 Jean*0135 land_mon_mnc = .FALSE.
cf701ea57b Ed H*0136 land_pickup_write_mnc = .FALSE.
0137 land_pickup_read_mnc = .FALSE.
0138 #endif
e0a2f8aec4 Jean*0139 land_grdLambda= 0.42 _d 0
0140 land_heatCs = 1.13 _d 6
89992793c5 Jean*0141 land_CpWater = 4.2 _d 3
0142
e0a2f8aec4 Jean*0143 land_wTauDiff = 48. _d 0*3600. _d 0
0144 land_waterCap = 0.24 _d 0
0145 land_fractRunOff = 0.5 _d 0
89992793c5 Jean*0146 land_rhoLiqW = rhoConstFresh
0147
0148 land_rhoSnow = 330. _d 0
0149 land_Lfreez = 334. _d 3
b30f09edfc Jean*0150 land_hMaxSnow = 1. _d 3
89992793c5 Jean*0151 diffKsnow = 0.30 _d 0
0152 timeSnowAge = 50. _d 0 * 86400. _d 0
0153 hNewSnowAge = 2. _d -3
0154 albColdSnow = 0.85 _d 0
0155 albWarmSnow = 0.70 _d 0
1f792166dd Davi*0156 tempSnowAlbL = -10. _d 0
89992793c5 Jean*0157 albOldSnow = 0.55 _d 0
0158 hAlbSnow = 0.30 _d 0
0159
e0a2f8aec4 Jean*0160 DO k=1,land_nLev
0161 land_dzF(k) = -1.
0162 land_rec_dzC(k) = -1.
0163 ENDDO
3a10a8cfd8 Jean*0164
b7411f1a84 Jean*0165
0166 land_timeave_mnc = .FALSE.
0167 land_taveFreq = UNSET_RL
0168
e0a2f8aec4 Jean*0169 WRITE(msgBuf,'(A)') ' LAND_READPARMS: opening data.land'
a9446a7f45 Jean*0170 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0171 I SQUEEZE_RIGHT, myThid )
e0a2f8aec4 Jean*0172
0173 CALL OPEN_COPY_DATA_FILE( 'data.land', 'LAND_READPARMS',
0174 O iUnit, myThid )
0175
0176
0177
0178
0179 READ(UNIT=iUnit,NML=LAND_MODEL_PAR)
0180
0181
0182 READ(UNIT=iUnit,NML=LAND_PHYS_PAR)
0183
3a10a8cfd8 Jean*0184 WRITE(msgBuf,'(A)')
e0a2f8aec4 Jean*0185 & ' LAND_READPARMS: finished reading data.land'
a9446a7f45 Jean*0186 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0187 I SQUEEZE_RIGHT, myThid )
3a10a8cfd8 Jean*0188
e0a2f8aec4 Jean*0189
7a77863887 Mart*0190 #ifdef SINGLE_DISK_IO
e0a2f8aec4 Jean*0191 CLOSE(iUnit)
7a77863887 Mart*0192 #else
0193 CLOSE(iUnit,STATUS='DELETE')
0194 #endif /* SINGLE_DISK_IO */
e0a2f8aec4 Jean*0195
0196
b7411f1a84 Jean*0197
0198
0199 IF ( land_taveFreq .NE. UNSET_RL ) THEN
0200 WRITE(msgBuf,'(2A)') 'LAND_READPARMS: ',
0201 & '"land_taveFreq" is no longer allowed in file "data.land"'
0202 CALL PRINT_ERROR( msgBuf, myThid )
0203 WRITE(msgBuf,'(2A)') 'LAND_READPARMS: ',
0204 & ' since "pkg/timeave" has been removed.'
0205 CALL PRINT_ERROR( msgBuf, myThid )
0206
0207 STOP 'ABNORMAL END: S/R LAND_READPARMS'
0208 ENDIF
0209 IF ( land_timeave_mnc ) THEN
0210 WRITE(msgBuf,'(2A)') 'LAND_READPARMS: "land_timeave_mnc"',
0211 & ' is no longer allowed in file "data.land"'
0212 CALL PRINT_ERROR( msgBuf, myThid )
0213 WRITE(msgBuf,'(2A)') 'LAND_READPARMS: ',
0214 & ' since "pkg/timeave" has been removed.'
0215 CALL PRINT_ERROR( msgBuf, myThid )
0216
0217 STOP 'ABNORMAL END: S/R LAND_READPARMS'
0218 ENDIF
0219
d2895c0628 Jean*0220
89992793c5 Jean*0221
0222 land_impl_grT = land_calc_grT .AND. land_impl_grT
0223
0224 tmpvar = 0. _d 0
0225 DO k=1,land_nLev
0226 tmpvar = tmpvar+land_dzF(k)
0227 IF (tmpvar.GT.0. _d 0) land_rec_dzC(k) = 2. _d 0 / tmpvar
0228 tmpvar = land_dzF(k)
0229 ENDDO
3a10a8cfd8 Jean*0230 IF ( land_Lfreez.NE. 0. _d 0 ) THEN
89992793c5 Jean*0231 recip_Lfreez = 1. _d 0 / land_Lfreez
0232 ELSE
0233 recip_Lfreez = 0. _d 0
0234 ENDIF
0235
cf701ea57b Ed H*0236 #ifdef ALLOW_MNC
3a10a8cfd8 Jean*0237 land_snapshot_mnc = useMNC .AND. land_snapshot_mnc
0238 land_mon_mnc = useMNC .AND. land_mon_mnc
0239 land_pickup_write_mnc = useMNC .AND. land_pickup_write_mnc
0240 land_pickup_read_mnc = useMNC .AND. land_pickup_read_mnc
0241
0242 land_snapshot_mdsio = (.NOT.land_snapshot_mnc)
0243 & .OR. outputTypesInclusive
0244 land_mon_stdio = (.NOT.land_mon_mnc)
0245 & .OR. outputTypesInclusive
0246 land_pickup_write_mdsio = (.NOT.land_pickup_write_mnc)
0247 & .OR. outputTypesInclusive
cf701ea57b Ed H*0248 #else
0249 land_snapshot_mnc = .FALSE.
3a10a8cfd8 Jean*0250 land_mon_mnc = .FALSE.
cf701ea57b Ed H*0251 land_pickup_write_mnc = .FALSE.
0252 land_pickup_read_mnc = .FALSE.
0253 land_snapshot_mdsio = .TRUE.
3a10a8cfd8 Jean*0254 land_mon_stdio = .TRUE.
cf701ea57b Ed H*0255 land_pickup_write_mdsio = .TRUE.
0256 #endif
0257
e0a2f8aec4 Jean*0258
0259
0260 _END_MASTER(myThid)
3a10a8cfd8 Jean*0261
e0a2f8aec4 Jean*0262
0263 _BARRIER
0264
0265 #endif /* ALLOW_LAND */
0266
0267 RETURN
0268 END