File indexing completed on 2025-11-07 06:08:37 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
b7411f1a84 Jean*0001 #undef ALLOW_LAND_TAVE
d2895c0628 Jean*0002 #include "LAND_OPTIONS.h"
0003
0004
0005
0006
0007 SUBROUTINE LAND_CHECK( myThid )
0008
0009
0010
0011
0012
0013
0014
0015
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"
0026 #ifdef ALLOW_MNC
0027 # include "MNC_PARAMS.h"
0028 #endif
0029
0030
0031
0032 INTEGER myThid
0033
0034 #ifdef ALLOW_LAND
0035
0036 INTEGER ILNBLNK
0037 EXTERNAL ILNBLNK
0038
0039
0040
0041
0042
0043 CHARACTER*(MAX_LEN_MBUF) msgBuf
0044 INTEGER iUnit, iL
0045
0046
0047
0048
0049 _BEGIN_MASTER(myThid)
0050
0051 iUnit = standardMessageUnit
0052 WRITE(msgBuf,'(A)') 'LAND_CHECK: #define ALLOW_LAND'
0053 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0054
0055
0056 WRITE(msgBuf,'(A)') '// ==================================='
0057 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0058 WRITE(msgBuf,'(A)') '// Land package parameters :'
0059 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0060 WRITE(msgBuf,'(A)') '// ==================================='
0061 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0062
0063
0064 CALL WRITE_0D_L( land_calc_grT, INDEX_NONE,
0065 & 'land_calc_grT =',
0066 & ' /* step forward ground Temp. on/off flag */')
0067 CALL WRITE_0D_L( land_calc_grW, INDEX_NONE,
0068 & 'land_calc_grW =',
0069 & ' /* step forward soil moiture on/off flag */')
0070 CALL WRITE_0D_L( land_impl_grT, INDEX_NONE,
0071 & 'land_impl_grT =',
0072 & ' /* solve ground temperature implicitly */')
0073 CALL WRITE_0D_L( land_calc_snow, INDEX_NONE,
0074 & 'land_calc_snow =',
0075 & ' /* step forward snow thickness */')
0076 CALL WRITE_0D_L( land_calc_alb, INDEX_NONE,
0077 & 'land_calc_alb =',
0078 & ' /* compute land+snow albedo */')
0079 iL = ILNBLNK( land_grT_iniFile )
0080 IF ( iL.GE.1 ) THEN
0081 WRITE(msgBuf,'(A,A)') 'land_grT_iniFile = ',
0082 & '/* Initial ground-Temp Input-File */'
0083 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0084 WRITE(msgBuf,'(16X,A)') land_grT_iniFile(1:iL)
0085 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0086 msgBuf=' ;'
0087 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0088 ENDIF
0089 iL = ILNBLNK( land_grW_iniFile )
0090 IF ( iL.GE.1 ) THEN
0091 WRITE(msgBuf,'(A,A)') 'land_grW_iniFile = ',
0092 & '/* Initial soil-Water Input-File */'
0093 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0094 WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
0095 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0096 msgBuf=' ;'
0097 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0098 ENDIF
0099 iL = ILNBLNK( land_snow_iniFile )
0100 IF ( iL.GE.1 ) THEN
0101 WRITE(msgBuf,'(A,A)') 'land_snow_iniFile= ',
0102 & '/* Initial snow thickness Input-File */'
0103 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0104 WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
0105 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0106 msgBuf=' ;'
0107 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0108 ENDIF
0109 CALL WRITE_0D_RL( land_deltaT, INDEX_NONE,'land_deltaT =',
0110 & ' /* land model Time-Step (s) */')
0111 CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_diagFreq =',
0112 & ' /* Frequency^-1 for diagnostic output (s) */')
0113 CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_monFreq =',
0114 & ' /* Frequency^-1 for monitor output (s) */')
0115 CALL WRITE_1D_RL( land_dzF,land_nLev, INDEX_K,'land_dzF = ',
0116 & ' /* layer thickness ( m ) */')
0117 CALL WRITE_1D_RL(land_rec_dzC,land_nLev,INDEX_K,'land_rec_dzC= '
0118 & ,' /* recip. vertical spacing (m-1) */')
0119 CALL WRITE_0D_L( land_snapshot_mdsio, INDEX_NONE,
0120 & 'land_snapshot_mdsio =',
0121 & ' /* use MDSIO for snapshot output */')
0122 CALL WRITE_0D_L( land_snapshot_mnc, INDEX_NONE,
0123 & 'land_snapshot_mnc =',' /* use MNC for snapshot output */')
0124 CALL WRITE_0D_L( land_mon_stdio, INDEX_NONE,
0125 & 'land_mon_stdio =',' /* use STDOUT for monitor output */')
0126 CALL WRITE_0D_L( land_mon_mnc, INDEX_NONE,
0127 & 'land_mon_mnc =',' /* use MNC for monitor output */')
0128 CALL WRITE_0D_L( land_pickup_write_mnc, INDEX_NONE,
0129 & 'land_pickup_write_mnc =',
0130 & ' /* use MNC for writing pickups */')
0131 CALL WRITE_0D_L( land_pickup_read_mnc, INDEX_NONE,
0132 & 'land_pickup_read_mnc =',
0133 & ' /* use MNC for reading pickups */')
0134
0135
0136 CALL WRITE_0D_RL(land_grdLambda,INDEX_NONE,'land_grdLambda =',
0137 & ' /* Thermal conductivity of the ground (W/m/K)*/')
0138 CALL WRITE_0D_RL( land_heatCs,INDEX_NONE,'land_heatCs =',
0139 & ' /* Heat capacity of dry soil (J/m3/K) */')
0140 CALL WRITE_0D_RL( land_CpWater,INDEX_NONE,'land_CpWater =',
0141 & ' /* Heat capacity of water (J/kg/K) */')
0142 CALL WRITE_0D_RL( land_wTauDiff,INDEX_NONE,'land_wTauDiff =',
0143 & ' /* soil moisture diffusion time scale (s) */')
0144 CALL WRITE_0D_RL( land_waterCap,INDEX_NONE,'land_waterCap =',
0145 & ' /* field capacity per meter of soil (1) */')
0146 CALL WRITE_0D_RL(land_fractRunOff,INDEX_NONE,'land_fractRunOff='
0147 & ,' /* fraction of water in excess which run-off */')
0148 CALL WRITE_0D_RL(land_rhoLiqW,INDEX_NONE,'land_rhoLiqW =',
0149 & ' /* density of liquid water (kg/m3) */')
0150 CALL WRITE_0D_RL(land_rhoSnow,INDEX_NONE,'land_rhoSnow =',
0151 & ' /* density of snow (kg/m3) */')
0152 CALL WRITE_0D_RL(land_Lfreez,INDEX_NONE,'land_Lfreez =',
0153 & ' /* Latent heat of freezing (J/kg) */')
0154 CALL WRITE_0D_RL(land_hMaxSnow,INDEX_NONE,'land_hMaxSnow =',
0155 & ' /* maximum snow-thickness (m) */')
0156 CALL WRITE_0D_RL(diffKsnow,INDEX_NONE,'diffKsnow =',
0157 & ' /* thermal conductivity of snow (W/m/K) */')
0158 CALL WRITE_0D_RL(timeSnowAge,INDEX_NONE,'timeSnowAge =',
0159 & ' /* snow aging time scale (s) */')
0160 CALL WRITE_0D_RL(hNewSnowAge,INDEX_NONE,'hNewSnowAge =',
0161 & ' /* new snow thickness to refresh snow-age by 1/e */')
0162 CALL WRITE_0D_RL(albColdSnow,INDEX_NONE,'albColdSnow =',
0163 & ' /* albedo of cold (=dry) new snow */')
0164 CALL WRITE_0D_RL(albWarmSnow,INDEX_NONE,'albWarmSnow =',
0165 & ' /* albedo of warm (=wet) new snow */')
0166 CALL WRITE_0D_RL(tempSnowAlbL,INDEX_NONE,'tempSnowAlbL =',
0167 & ' /* Temp. transition from ColdSnow to WarmSnow Alb. (oC) */')
0168 CALL WRITE_0D_RL(albOldSnow, INDEX_NONE,'albOldSnow =',
0169 & ' /* albedo of old snow (snowAge >35.d)*/')
0170 CALL WRITE_0D_RL(hAlbSnow, INDEX_NONE,'hAlbSnow =',
0171 & ' /* snow depth for albedo transition */')
0172
0173 WRITE(msgBuf,'(A)') '// ==================================='
0174 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
0175
0176
0177
0178
0179
0180 IF ( .NOT.useAIM ) THEN
0181 WRITE(msgBuf,'(A)')
0182 & 'LAND_CHECK: land pkg only implemented with AIM physics'
0183 CALL PRINT_ERROR( msgBuf, myThid)
0184 WRITE(msgBuf,'(A)')
0185 & 'DO NOT use Land (useLand=T) without AIM (useAIM=F, data.pkg)'
0186 CALL PRINT_ERROR( msgBuf, myThid)
0187 STOP 'ABNORMAL END: S/R LAND_CHECK'
0188 ENDIF
0189
0190 IF ( land_nLev.NE.2 .AND. land_impl_grT ) THEN
0191 WRITE(msgBuf,'(2A,I3)') 'LAND_CHECK: ',
0192 & ' land_impl_grT=.T. but land_nLev=',land_nLev
0193 CALL PRINT_ERROR( msgBuf, myThid)
0194 WRITE(msgBuf,'(A)')
0195 & 'Implicit scheme only implemented for 2 levels land Temp'
0196 CALL PRINT_ERROR( msgBuf, myThid)
0197 STOP 'ABNORMAL END: S/R LAND_CHECK'
0198 ENDIF
0199
b7411f1a84 Jean*0200 #ifdef ALLOW_LAND_TAVE
0201 WRITE(msgBuf,'(2A)') 'LAND_CHECK: ',
0202 & '#define ALLOW_LAND_TAVE not allowed in LAND_OPTIONS.h'
d2895c0628 Jean*0203 CALL PRINT_ERROR( msgBuf, myThid)
b7411f1a84 Jean*0204 WRITE(msgBuf,'(2A)') 'LAND_CHECK: ',
0205 & 'since "pkg/timeave" has been removed.'
d2895c0628 Jean*0206 CALL PRINT_ERROR( msgBuf, myThid)
0207 STOP 'ABNORMAL END: S/R LAND_CHECK'
0208 #endif /* ALLOW_LAND_TAVE */
0209
0210
0211 #ifndef ALLOW_MONITOR
0212 IF (land_monFreq.GT.0.) THEN
0213 WRITE(msgBuf,'(2A)') 'LAND_CHECK:',
0214 & ' land_monFreq > 0 but ALLOW_MONITOR undefined'
0215 CALL PRINT_ERROR( msgBuf, myThid)
0216 WRITE(msgBuf,'(2A)')
0217 & 'Re-compile with pkg monitor (in packages.conf)'
0218 CALL PRINT_ERROR( msgBuf, myThid)
0219 STOP 'ABNORMAL END: S/R LAND_CHECK'
0220 ENDIF
0221 #endif /* ALLOW_MONITOR */
0222
0223
0224
0225 _END_MASTER(myThid)
0226
0227 #endif /* ALLOW_LAND */
0228
0229 RETURN
0230 END