Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add depth dimension to soil variables #513

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions build/source/dshare/popMetadat.f90
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,8 @@ subroutine popMetadat(err,message)
mpar_meta(iLookPARAM%rootDistExp) = var_info('rootDistExp' , 'exponent for the vertical distribution of root density' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%plantWiltPsi) = var_info('plantWiltPsi' , 'matric head at wilting point' , 'm' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%soilStressParam) = var_info('soilStressParam' , 'parameter in the exponential soil stress function' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%critSoilWilting) = var_info('critSoilWilting' , 'critical vol. liq. water content when plants are wilting' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%critSoilTranspire) = var_info('critSoilTranspire' , 'critical vol. liq. water content when transpiration is limited' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%critSoilWilting) = var_info('critSoilWilting' , 'critical vol. liq. water content when plants are wilting' , '-' , get_ixVarType('parSoil'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%critSoilTranspire) = var_info('critSoilTranspire' , 'critical vol. liq. water content when transpiration is limited' , '-' , get_ixVarType('parSoil'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%critAquiferTranspire) = var_info('critAquiferTranspire' , 'critical aquifer storage value when transpiration is limited' , 'm' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%minStomatalResistance) = var_info('minStomatalResistance' , 'minimum stomatal resistance' , 's m-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%leafDimension) = var_info('leafDimension' , 'characteristic leaf dimension' , 'm' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
Expand Down Expand Up @@ -241,7 +241,7 @@ subroutine popMetadat(err,message)
! scalar soil properties
mpar_meta(iLookPARAM%fieldCapacity) = var_info('fieldCapacity' , 'soil field capacity (vol liq water content when baseflow begins)' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%wettingFrontSuction) = var_info('wettingFrontSuction' , 'Green-Ampt wetting front suction' , 'm' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%theta_mp) = var_info('theta_mp' , 'volumetric liquid water content when macropore flow begins' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%theta_mp) = var_info('theta_mp' , 'volumetric liquid water content when macropore flow begins' , '-' , get_ixVarType('parSoil'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%mpExp) = var_info('mpExp' , 'empirical exponent in macropore flow equation' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%kAnisotropic) = var_info('kAnisotropic' , 'anisotropy factor for lateral hydraulic conductivity' , '-' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
mpar_meta(iLookPARAM%zScale_TOPMODEL) = var_info('zScale_TOPMODEL' , 'TOPMODEL scaling factor used in lower boundary condition for soil', 'm' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
Expand Down
6 changes: 3 additions & 3 deletions build/source/engine/paramCheck.f90
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ subroutine paramCheck(mpar_data,err,message)
heightCanopyTop => mpar_data%var(iLookPARAM%heightCanopyTop)%dat(1), & ! intent(in): [dp] height at the top of the vegetation canopy (m)
heightCanopyBottom => mpar_data%var(iLookPARAM%heightCanopyBottom)%dat(1),& ! intent(in): [dp] height at the bottom of the vegetation canopy (m)
! transpiration
critSoilWilting => mpar_data%var(iLookPARAM%critSoilWilting)%dat(1), & ! intent(in): [dp] critical vol. liq. water content when plants are wilting (-)
critSoilTranspire => mpar_data%var(iLookPARAM%critSoilTranspire)%dat(1), & ! intent(in): [dp] critical vol. liq. water content when transpiration is limited (-)
critSoilWilting => mpar_data%var(iLookPARAM%critSoilWilting)%dat, & ! intent(in): [dp] critical vol. liq. water content when plants are wilting (-)
critSoilTranspire => mpar_data%var(iLookPARAM%critSoilTranspire)%dat, & ! intent(in): [dp] critical vol. liq. water content when transpiration is limited (-)
! soil properties
fieldCapacity => mpar_data%var(iLookPARAM%fieldCapacity)%dat(1), & ! intent(in): [dp] field capacity (-)
theta_sat => mpar_data%var(iLookPARAM%theta_sat)%dat, & ! intent(in): [dp(:)] soil porosity (-)
Expand Down Expand Up @@ -161,7 +161,7 @@ subroutine paramCheck(mpar_data,err,message)
end if

! check transpiration
if(critSoilTranspire < critSoilWilting)then
if( any(critSoilTranspire < critSoilWilting) )then
write(message,'(a,i0,a)') trim(message)//'critical point for transpiration is less than the wilting point'
err=20; return
endif
Expand Down
6 changes: 3 additions & 3 deletions build/source/engine/soilLiqFlx.f90
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ subroutine soilLiqFlx(&
f_impede => mpar_data%var(iLookPARAM%f_impede)%dat(1), & ! intent(in): ice impedence factor (-)
soilIceScale => mpar_data%var(iLookPARAM%soilIceScale)%dat(1), & ! intent(in): scaling factor for depth of soil ice, used to get frozen fraction (m)
soilIceCV => mpar_data%var(iLookPARAM%soilIceCV)%dat(1), & ! intent(in): CV of depth of soil ice, used to get frozen fraction (-)
theta_mp => mpar_data%var(iLookPARAM%theta_mp)%dat(1), & ! intent(in): volumetric liquid water content when macropore flow begins (-)
theta_mp => mpar_data%var(iLookPARAM%theta_mp)%dat, & ! intent(in): volumetric liquid water content when macropore flow begins (-)
mpExp => mpar_data%var(iLookPARAM%mpExp)%dat(1), & ! intent(in): empirical exponent in macropore flow equation (-)
! input: saturated hydraulic conductivity
mLayerSatHydCondMP => flux_data%var(iLookFLUX%mLayerSatHydCondMP)%dat, & ! intent(in): saturated hydraulic conductivity of macropores at the mid-point of each layer (m s-1)
Expand Down Expand Up @@ -393,7 +393,7 @@ subroutine soilLiqFlx(&
mpExp, & ! intent(in): empirical exponent in macropore flow equation (-)
theta_sat(iSoil), & ! intent(in): soil porosity (-)
theta_res(iSoil), & ! intent(in): soil residual volumetric water content (-)
theta_mp, & ! intent(in): volumetric liquid water content when macropore flow begins (-)
theta_mp(iSoil), & ! intent(in): volumetric liquid water content when macropore flow begins (-)
f_impede, & ! intent(in): ice impedence factor (-)
! input: saturated hydraulic conductivity
mLayerSatHydCond(iSoil), & ! intent(in): saturated hydraulic conductivity at the mid-point of each layer (m s-1)
Expand Down Expand Up @@ -589,7 +589,7 @@ subroutine soilLiqFlx(&
case(mixdform)
scalarVolFracLiqTrial = volFracLiq(vectorMatricHeadTrial(ixPerturb),vGn_alpha(ixPerturb),theta_res(ixPerturb),theta_sat(ixPerturb),vGn_n(ixPerturb),vGn_m(ixPerturb))
scalarHydCondMicro = hydCond_psi(vectorMatricHeadTrial(ixPerturb),mLayerSatHydCond(ixOriginal),vGn_alpha(ixPerturb),vGn_n(ixPerturb),vGn_m(ixPerturb)) * iceImpedeFac(ixOriginal)
scalarHydCondMacro = hydCondMP_liq(scalarVolFracLiqTrial,theta_sat(ixPerturb),theta_mp,mpExp,mLayerSatHydCondMP(ixOriginal),mLayerSatHydCond(ixOriginal))
scalarHydCondMacro = hydCondMP_liq(scalarVolFracLiqTrial,theta_sat(ixPerturb),theta_mp(ixPerturb),mpExp,mLayerSatHydCondMP(ixOriginal),mLayerSatHydCond(ixOriginal))
vectorHydCondTrial(ixPerturb) = scalarHydCondMicro + scalarHydCondMacro
case default; err=10; message=trim(message)//"unknown form of Richards' equation"; return
end select ! end select form of Richards' equation
Expand Down
10 changes: 5 additions & 5 deletions build/source/engine/vegNrgFlux.f90
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,8 @@ subroutine vegNrgFlux(&
theta_res => mpar_data%var(iLookPARAM%theta_res)%dat(1), & ! intent(in): [dp] residual volumetric liquid water content (-)
plantWiltPsi => mpar_data%var(iLookPARAM%plantWiltPsi)%dat(1), & ! intent(in): [dp] matric head at wilting point (m)
soilStressParam => mpar_data%var(iLookPARAM%soilStressParam)%dat(1), & ! intent(in): [dp] parameter in the exponential soil stress function (-)
critSoilWilting => mpar_data%var(iLookPARAM%critSoilWilting)%dat(1), & ! intent(in): [dp] critical vol. liq. water content when plants are wilting (-)
critSoilTranspire => mpar_data%var(iLookPARAM%critSoilTranspire)%dat(1), & ! intent(in): [dp] critical vol. liq. water content when transpiration is limited (-)
critSoilWilting => mpar_data%var(iLookPARAM%critSoilWilting)%dat, & ! intent(in): [dp] critical vol. liq. water content when plants are wilting (-)
critSoilTranspire => mpar_data%var(iLookPARAM%critSoilTranspire)%dat, & ! intent(in): [dp] critical vol. liq. water content when transpiration is limited (-)
critAquiferTranspire => mpar_data%var(iLookPARAM%critAquiferTranspire)%dat(1), & ! intent(in): [dp] critical aquifer storage value when transpiration is limited (m)
minStomatalResistance => mpar_data%var(iLookPARAM%minStomatalResistance)%dat(1), & ! intent(in): [dp] mimimum stomatal resistance (s m-1)
! input: forcing at the upper boundary
Expand Down Expand Up @@ -2109,8 +2109,8 @@ subroutine soilResist(&
! input (parameters)
real(rkind),intent(in) :: plantWiltPsi ! matric head at wilting point (m)
real(rkind),intent(in) :: soilStressParam ! parameter in the exponential soil stress function (-)
real(rkind),intent(in) :: critSoilWilting ! critical vol. liq. water content when plants are wilting (-)
real(rkind),intent(in) :: critSoilTranspire ! critical vol. liq. water content when transpiration is limited (-)
real(rkind),intent(in) :: critSoilWilting(:) ! critical vol. liq. water content when plants are wilting (-)
real(rkind),intent(in) :: critSoilTranspire(:) ! critical vol. liq. water content when transpiration is limited (-)
real(rkind),intent(in) :: critAquiferTranspire ! critical aquifer storage value when transpiration is limited (m)
! output
real(rkind),intent(out) :: wAvgTranspireLimitFac ! intent(out): weighted average of the transpiration limiting factor (-)
Expand All @@ -2131,7 +2131,7 @@ subroutine soilResist(&
! compute the soil stress function
select case(ixSoilResist)
case(NoahType) ! thresholded linear function of volumetric liquid water content
gx = (mLayerVolFracLiq(iLayer) - critSoilWilting) / (critSoilTranspire - critSoilWilting)
gx = (mLayerVolFracLiq(iLayer) - critSoilWilting(iLayer)) / (critSoilTranspire(iLayer) - critSoilWilting(iLayer))
case(CLM_Type) ! thresholded linear function of matric head
if (mLayerMatricHead(iLayer) > plantWiltPsi) then
gx = 1._rkind - mLayerMatricHead(iLayer)/plantWiltPsi
Expand Down