Skip to content

Commit

Permalink
Merge pull request #1268 from XiulinGao/xlg-grass-sapwood-area-fix
Browse files Browse the repository at this point in the history
calculate sapwood cross-sectional area for grass PFT
  • Loading branch information
glemieux authored Nov 18, 2024
2 parents de5f266 + 1365dee commit 08f2410
Showing 1 changed file with 42 additions and 0 deletions.
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

0 comments on commit 08f2410

Please sign in to comment.