Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:41:41 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
e0a2f8aec4 Jean*0001 #include "LAND_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C     !ROUTINE: LAND_READPARMS
                0005 C     !INTERFACE:
                0006       SUBROUTINE LAND_READPARMS( myThid )
                0007 
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
                0010 C     | S/R LAND_READPARMS
d2895c0628 Jean*0011 C     | o Read Land package parameters from parameter
                0012 C     |   file "data.land"
e0a2f8aec4 Jean*0013 C     *==========================================================*
                0014 C     \ev
3a10a8cfd8 Jean*0015 
e0a2f8aec4 Jean*0016 C     !USES:
                0017       IMPLICIT NONE
                0018 
                0019 C     == Global variables ===
                0020 C-- size for MITgcm & Land package :
                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 C     !INPUT/OUTPUT PARAMETERS:
d2895c0628 Jean*0031 C     myThid     :: my Thread Id number
e0a2f8aec4 Jean*0032       INTEGER myThid
                0033 
                0034 #ifdef ALLOW_LAND
d2895c0628 Jean*0035 C     !LOCAL VARIABLES:
                0036 C     msgBuf     :: Informational/error message buffer
e0a2f8aec4 Jean*0037 C     iUnit      :: Work variable for IO unit number
                0038 C     k          :: loop counter
                0039       CHARACTER*(MAX_LEN_MBUF) msgBuf
d2895c0628 Jean*0040       INTEGER iUnit, k
e0a2f8aec4 Jean*0041       _RL tmpvar
d2895c0628 Jean*0042 CEOP
e0a2f8aec4 Jean*0043 
                0044 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0045 
                0046 C--   Land model parameters:
89992793c5 Jean*0047 C     land_calc_grT  :: step forward ground Temperature
                0048 C     land_calc_grW  :: step forward soil moiture
                0049 C     land_impl_grT  :: solve ground Temperature implicitly
                0050 C     land_calc_snow :: step forward snow thickness
                0051 C     land_calc_alb  :: compute albedo of snow over land
                0052 C     land_oldPickup :: restart from an old pickup (= before checkpoint 52j)
                0053 C     land_grT_iniFile  :: File containing initial ground Temp.
                0054 C     land_grW_iniFile  :: File containing initial ground Water.
                0055 C     land_snow_iniFile :: File containing initial snow thickness.
                0056 C     land_deltaT    :: land model time-step
                0057 C     land_taveFreq  :: Frequency^-1 for time-Aver. output (s)
                0058 C     land_diagFreq  :: Frequency^-1 for diagnostic output (s)
                0059 C     land_monFreq   :: Frequency^-1 for monitor    output (s)
                0060 C     land_dzF       :: layer thickness
e0a2f8aec4 Jean*0061       NAMELIST /LAND_MODEL_PAR/
3a10a8cfd8 Jean*0062      &    land_calc_grT, land_calc_grW,
89992793c5 Jean*0063      &    land_impl_grT, land_calc_snow,
3a10a8cfd8 Jean*0064      &    land_calc_alb, land_oldPickup,
89992793c5 Jean*0065      &    land_grT_iniFile, land_grW_iniFile, land_snow_iniFile,
                0066      &    land_deltaT, land_taveFreq, land_diagFreq, land_monFreq,
cf701ea57b Ed H*0067      &    land_dzF,
3a10a8cfd8 Jean*0068      &    land_timeave_mnc, land_snapshot_mnc, land_mon_mnc,
                0069      &    land_pickup_write_mnc, land_pickup_read_mnc
cf701ea57b Ed H*0070 
e0a2f8aec4 Jean*0071 C--   Physical constants :
                0072 C     land_grdLambda  :: Thermal conductivity of the ground
89992793c5 Jean*0073 C     land_heatCs     :: Heat capacity of dry soil (J/m3/K)
                0074 C     land_CpWater    :: Heat capacity of water    (J/kg/K)
e0a2f8aec4 Jean*0075 C     land_wTauDiff   :: soil moisture diffusion time scale
                0076 C     land_waterCap   :: field capacity per meter of soil
                0077 C     land_fractRunOff:: fraction of water in excess which run-off
89992793c5 Jean*0078 C     land_rhoLiqW    :: density of liquid water (kg/m3)
                0079 C     land_rhoSnow    :: density of snow (kg/m3)
                0080 C     land_Lfreez     :: Latent heat of freezing (J/kg)
b30f09edfc Jean*0081 C     land_hMaxSnow   :: Maximum snow-thickness  (m)
                0082 C     diffKsnow       :: thermal conductivity of snow (W/m/K)
89992793c5 Jean*0083 C     timeSnowAge     :: snow aging time scale   (s)
                0084 C     hNewSnowAge     :: new snow thickness that refresh the snow-age (by 1/e)
                0085 C     albColdSnow     :: albedo of cold (=dry) new snow (Tsfc < -10)
                0086 C     albWarmSnow     :: albedo of warm (=wet) new snow (Tsfc = 0)
                0087 C     albOldSnow      :: albedo of old snow (snowAge > 35.d)
                0088 C     hAlbSnow        :: snow thickness for albedo transition: snow/ground
e0a2f8aec4 Jean*0089 
                0090       NAMELIST /LAND_PHYS_PAR/
89992793c5 Jean*0091      &    land_grdLambda, land_heatCs, land_CpWater,
                0092      &    land_wTauDiff, land_waterCap, land_fractRunOff,
                0093      &    land_rhoLiqW,
3a10a8cfd8 Jean*0094      &    land_rhoSnow, land_Lfreez,
b30f09edfc Jean*0095      &    land_hMaxSnow, diffKsnow, timeSnowAge, hNewSnowAge,
1f792166dd Davi*0096      &    albColdSnow, albWarmSnow, tempSnowAlbL, albOldSnow, hAlbSnow
e0a2f8aec4 Jean*0097 
                0098 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0099 
d2895c0628 Jean*0100       IF ( .NOT.useLand ) THEN
                0101 C-    pkg LAND is not used
                0102         _BEGIN_MASTER(myThid)
                0103 C-    Track pkg activation status:
                0104 C     print a (weak) warning if data.land is found
                0105          CALL PACKAGES_UNUSED_MSG( 'useLand', ' ', ' ' )
                0106         _END_MASTER(myThid)
                0107         RETURN
                0108       ENDIF
                0109 
a9446a7f45 Jean*0110       _BEGIN_MASTER(myThid)
                0111 
e0a2f8aec4 Jean*0112 C-    Set default value:
3a10a8cfd8 Jean*0113       land_calc_grT = .TRUE.
e0a2f8aec4 Jean*0114       land_calc_grW = .TRUE.
3a10a8cfd8 Jean*0115       land_impl_grT = .TRUE.
                0116       land_calc_snow= .TRUE.
                0117       land_calc_alb = .TRUE.
                0118       land_oldPickup= .FALSE.
a8844d79c5 Jean*0119       land_grT_iniFile = ' '
                0120       land_grW_iniFile = ' '
89992793c5 Jean*0121       land_snow_iniFile= ' '
e0a2f8aec4 Jean*0122       land_deltaT   = deltaTclock
                0123       land_taveFreq = taveFreq
                0124       land_diagFreq = dumpFreq
89992793c5 Jean*0125       land_monFreq = monitorFreq
cf701ea57b Ed H*0126 #ifdef ALLOW_MNC
                0127       land_timeave_mnc       = timeave_mnc .AND. useMNC
                0128       land_snapshot_mnc      = snapshot_mnc .AND. useMNC
3a10a8cfd8 Jean*0129       land_mon_mnc           = monitor_mnc .AND. useMNC
cf701ea57b Ed H*0130       land_pickup_write_mnc  = pickup_write_mnc .AND. useMNC
                0131       land_pickup_read_mnc   = pickup_read_mnc .AND. useMNC
                0132 #else
                0133       land_timeave_mnc       = .FALSE.
                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 c     land_CpWater  = HeatCapacity_Cp
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 C-    snow parameters:
                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 C-    layer thickness:
e0a2f8aec4 Jean*0160       DO k=1,land_nLev
                0161        land_dzF(k) = -1.
                0162        land_rec_dzC(k) = -1.
                0163       ENDDO
3a10a8cfd8 Jean*0164 
e0a2f8aec4 Jean*0165       WRITE(msgBuf,'(A)') ' LAND_READPARMS: opening data.land'
a9446a7f45 Jean*0166       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0167      I                    SQUEEZE_RIGHT, myThid )
e0a2f8aec4 Jean*0168 
                0169       CALL OPEN_COPY_DATA_FILE( 'data.land', 'LAND_READPARMS',
                0170      O                          iUnit, myThid )
                0171 
                0172 C--   Read parameters from open data file:
                0173 
                0174 C-    Parameters for Land model:
                0175       READ(UNIT=iUnit,NML=LAND_MODEL_PAR)
                0176 
                0177 C-    Physical Constants for Land package
                0178       READ(UNIT=iUnit,NML=LAND_PHYS_PAR)
                0179 
3a10a8cfd8 Jean*0180       WRITE(msgBuf,'(A)')
e0a2f8aec4 Jean*0181      &   ' LAND_READPARMS: finished reading data.land'
a9446a7f45 Jean*0182       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0183      I                    SQUEEZE_RIGHT, myThid )
3a10a8cfd8 Jean*0184 
e0a2f8aec4 Jean*0185 C--   Close the open data file
7a77863887 Mart*0186 #ifdef SINGLE_DISK_IO
e0a2f8aec4 Jean*0187       CLOSE(iUnit)
7a77863887 Mart*0188 #else
                0189       CLOSE(iUnit,STATUS='DELETE')
                0190 #endif /* SINGLE_DISK_IO */
e0a2f8aec4 Jean*0191 
                0192 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d2895c0628 Jean*0193 C--   Derive other parameters:
89992793c5 Jean*0194 
                0195       land_impl_grT = land_calc_grT .AND. land_impl_grT
                0196 
                0197       tmpvar = 0. _d 0
                0198       DO k=1,land_nLev
                0199        tmpvar = tmpvar+land_dzF(k)
                0200        IF (tmpvar.GT.0. _d 0) land_rec_dzC(k) = 2. _d 0 / tmpvar
                0201        tmpvar = land_dzF(k)
                0202       ENDDO
3a10a8cfd8 Jean*0203       IF ( land_Lfreez.NE. 0. _d 0 ) THEN
89992793c5 Jean*0204         recip_Lfreez = 1. _d 0 / land_Lfreez
                0205       ELSE
                0206         recip_Lfreez = 0. _d 0
                0207       ENDIF
                0208 
cf701ea57b Ed H*0209 #ifdef ALLOW_MNC
3a10a8cfd8 Jean*0210       land_timeave_mnc      = useMNC .AND. land_timeave_mnc
                0211       land_snapshot_mnc     = useMNC .AND. land_snapshot_mnc
                0212       land_mon_mnc          = useMNC .AND. land_mon_mnc
                0213       land_pickup_write_mnc = useMNC .AND. land_pickup_write_mnc
                0214       land_pickup_read_mnc  = useMNC .AND. land_pickup_read_mnc
                0215 
                0216       land_timeave_mdsio      = (.NOT.land_timeave_mnc)
                0217      &                      .OR. outputTypesInclusive
                0218       land_snapshot_mdsio     = (.NOT.land_snapshot_mnc)
                0219      &                      .OR. outputTypesInclusive
                0220       land_mon_stdio          = (.NOT.land_mon_mnc)
                0221      &                      .OR. outputTypesInclusive
                0222       land_pickup_write_mdsio = (.NOT.land_pickup_write_mnc)
                0223      &                      .OR. outputTypesInclusive
cf701ea57b Ed H*0224 #else
                0225       land_timeave_mnc        = .FALSE.
                0226       land_snapshot_mnc       = .FALSE.
3a10a8cfd8 Jean*0227       land_mon_mnc            = .FALSE.
cf701ea57b Ed H*0228       land_pickup_write_mnc   = .FALSE.
                0229       land_pickup_read_mnc    = .FALSE.
                0230       land_timeave_mdsio      = .TRUE.
                0231       land_snapshot_mdsio     = .TRUE.
3a10a8cfd8 Jean*0232       land_mon_stdio          = .TRUE.
cf701ea57b Ed H*0233       land_pickup_write_mdsio = .TRUE.
                0234 #endif
                0235 
e0a2f8aec4 Jean*0236 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0237 
                0238       _END_MASTER(myThid)
3a10a8cfd8 Jean*0239 
e0a2f8aec4 Jean*0240 C--   Everyone else must wait for the parameters to be loaded
                0241       _BARRIER
                0242 
                0243 #endif /* ALLOW_LAND */
                0244 
                0245       RETURN
                0246       END