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

calculate sapwood cross-sectional area for grass PFT #1268

Merged
merged 5 commits into from
Nov 18, 2024
Merged
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
42 changes: 42 additions & 0 deletions biogeochem/FatesAllometryMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ module FatesAllometryMod
use FatesConstantsMod, only : fates_unset_r8
use FatesConstantsMod, only : itrue
use FatesConstantsMod, only : nearzero
use FatesConstantsMod, only : pi_const
use shr_log_mod , only : errMsg => shr_log_errMsg
use FatesGlobals , only : fates_log
use FatesGlobals , only : endrun => fates_endrun
Expand Down Expand Up @@ -1045,8 +1046,10 @@ subroutine bsap_allom(d,ipft,crowndamage,canopy_trim,elongf_stem, sapw_area,bsap
! dead woody biomass. So bsap = bagw. Might remove the bsap and bdead for grass
! in the future as there is no need to distinguish the two for grass above- and belowground biomass

call SapwoodAreaGrass(d,sapw_area)
call bagw_allom(d,ipft,crowndamage,elongf_stem,bagw,dbagwdd)
call bbgw_allom(d,ipft, elongf_stem,bbgw,dbbgwdd)

bsap = bagw + bbgw

! This is a grass-only functionnal type, no need to run crown-damage effects
Expand Down Expand Up @@ -1411,6 +1414,45 @@ subroutine bsap_ltarg_slatop(d,h,dhdd,bleaf,dbleafdd,ipft, &
return
end subroutine bsap_ltarg_slatop



! ============================================================================
! Area of sap wood cross-section specifically for grass PFT
! ============================================================================

subroutine SapwoodAreaGrass(d,sapw_area)

!---------------------------------------------------------------------------
! This function calculates sapwood cross-sectional area specifically for grass
! PFT using basal diameter (cm) of the entire plant as size reference,
! assume sapwood area of the entire plant as the sum of the cross-sectional area
! of each grass tiller
! such that water transport through sapwood can be seen as a collective behavior
! of all tillers
! No reference. Might update this to more theoretical-based approach once there
! is empirical evidence
!----------------
! Input arguments
!----------------
! d -- basal diameter [cm]

!----------------
! Output variables
!----------------
! sapw_area -- sapwood cross-sectional area [m2]

!---Arguments
real(r8), intent(in) :: d ! plant basal diameter [ cm]
real(r8), intent(out) :: sapw_area ! sapwood cross-sectional area [ m2]

! Calculate sapwood cross-sectional area assuming sapwood geometry as a
! cylinder and basal diameter is the diameter of the cylinder
sapw_area = (pi_const * ((d / 2.0_r8)**2.0_r8)) / cm2_per_m2

return

end subroutine SapwoodAreaGrass

! ============================================================================
! Specific storage relationships
! ============================================================================
Expand Down