119 lines
4.5 KiB
Fortran
119 lines
4.5 KiB
Fortran
module clm_varpar
|
|
|
|
!-----------------------------------------------------------------------
|
|
!BOP
|
|
!
|
|
! !MODULE: clm_varpar
|
|
!
|
|
! !DESCRIPTION:
|
|
! Module containing CLM parameters
|
|
!
|
|
! !USES:
|
|
use shr_kind_mod, only: r8 => shr_kind_r8
|
|
!
|
|
! !PUBLIC TYPES:
|
|
implicit none
|
|
save
|
|
!
|
|
! -------------------------------------------------------
|
|
! Module Parameters
|
|
! -------------------------------------------------------
|
|
|
|
! Note - model resolution is read in from the surface dataset
|
|
|
|
integer, parameter :: nlevsoi = 10 ! number of hydrologically active soil layers
|
|
integer, parameter :: nlevgrnd = 15 ! number of ground layers (includes lower layers that are hydrologically inactive)
|
|
integer, parameter :: nlevurb = nlevgrnd! number of urban layers (must equal nlevgrnd right now)
|
|
integer, parameter :: nlevlak = 10 ! number of lake layers
|
|
integer, parameter :: nlevsno = 5 ! maximum number of snow layers
|
|
integer, parameter :: numwat = 5 ! number of water types (soil, ice, 2 lakes, wetland)
|
|
integer, parameter :: numrad = 2 ! number of solar radiation bands: vis, nir
|
|
integer, parameter :: ivis = 1 ! index for visible band
|
|
integer, parameter :: inir = 2 ! index for near-infrared band
|
|
integer, parameter :: numsolar = 2 ! number of solar type bands: direct, diffuse
|
|
integer, parameter :: ndst = 4 ! number of dust size classes (BGC only)
|
|
integer, parameter :: dst_src_nbr = 3 ! number of size distns in src soil (BGC only)
|
|
integer, parameter :: sz_nbr = 200 ! number of sub-grid bins in large bin of dust size distribution (BGC only)
|
|
integer, parameter :: mxpft = 20 ! maximum number of PFT's for any mode
|
|
integer, parameter :: numveg = 16 ! number of veg types (without specific crop)
|
|
#if (defined CROP)
|
|
integer, parameter :: numpft = mxpft ! actual # of pfts (without bare)
|
|
integer, parameter :: numcft = 6 ! actual # of crops
|
|
#else
|
|
integer, parameter :: numpft = numveg ! actual # of pfts (without bare)
|
|
integer, parameter :: numcft = 2 ! actual # of crops
|
|
#endif
|
|
integer, parameter :: maxpatch_pft= MAXPATCH_PFT ! max number of plant functional types in naturally vegetated landunit
|
|
|
|
! -------------------------------------------------------
|
|
! Module Varaibles (initialized in clm_varpar_init)
|
|
! -------------------------------------------------------
|
|
|
|
! Indices used in surface file read and set in clm_varpar_init
|
|
|
|
integer :: maxpatch ! max number of patches
|
|
integer :: maxpatch_glcmec ! max number of elevation classes
|
|
integer :: maxpatch_urb ! max number of urban pfts (columns) in urban landunit
|
|
integer :: npatch_urban ! number of urban pfts (columns) in urban landunit
|
|
integer :: npatch_lake ! number of lake pfts (columns) in lake landunit
|
|
integer :: npatch_wet ! number of wetland pfts (columns) in wetland landunit
|
|
integer :: npatch_glacier ! number of glacier pfts (columns) in glacier landunit
|
|
integer :: npatch_glacier_mec ! number of glacier_mec pfts (columns) in glacier_mec landunit
|
|
integer :: max_pft_per_gcell
|
|
integer :: max_pft_per_lu
|
|
integer :: max_pft_per_col
|
|
|
|
! !PUBLIC MEMBER FUNCTIONS:
|
|
public clm_varpar_init ! set parameters
|
|
|
|
! !REVISION HISTORY:
|
|
! Created by Mariana Vertenstein
|
|
|
|
!EOP
|
|
!-----------------------------------------------------------------------
|
|
contains
|
|
|
|
!------------------------------------------------------------------------------
|
|
!BOP
|
|
!
|
|
! !IROUTINE: clm_varpar_init
|
|
!
|
|
! !INTERFACE:
|
|
subroutine clm_varpar_init()
|
|
!
|
|
! !DESCRIPTION:
|
|
! This subroutine initializes parameters in clm_varpar
|
|
!
|
|
! !USES:
|
|
!
|
|
! !ARGUMENTS:
|
|
implicit none
|
|
!
|
|
! !REVISION HISTORY:
|
|
! Created by T Craig
|
|
!
|
|
! !LOCAL VARIABLES:
|
|
!
|
|
!EOP
|
|
!------------------------------------------------------------------------------
|
|
|
|
maxpatch_urb = 5
|
|
npatch_urban = maxpatch_pft + 1
|
|
npatch_lake = npatch_urban + maxpatch_urb
|
|
npatch_wet = npatch_lake + 1
|
|
npatch_glacier = npatch_wet + 1
|
|
npatch_glacier_mec = npatch_glacier + maxpatch_glcmec
|
|
maxpatch = npatch_glacier_mec
|
|
|
|
max_pft_per_gcell = numpft+1 + 3 + maxpatch_urb + maxpatch_glcmec
|
|
#if (defined CROP)
|
|
max_pft_per_gcell = max_pft_per_gcell + numcft
|
|
#endif
|
|
max_pft_per_lu = max(numpft+1, numcft, maxpatch_urb)
|
|
max_pft_per_col = max(numpft+1, numcft, maxpatch_urb)
|
|
|
|
end subroutine clm_varpar_init
|
|
|
|
!------------------------------------------------------------------------------
|
|
end module clm_varpar
|