Skip to content

Commit

Permalink
Merge pull request #738 from JunyanDing/DynamicRoots_MD_bugfix
Browse files Browse the repository at this point in the history
Logistic model of root growth
  • Loading branch information
rgknox authored Oct 13, 2021
2 parents 2fa452a + 20224fe commit 5d449e4
Show file tree
Hide file tree
Showing 12 changed files with 421 additions and 237 deletions.
12 changes: 6 additions & 6 deletions biogeochem/EDCanopyStructureMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1601,19 +1601,19 @@ subroutine leaf_area_profile( currentSite )
currentCohort => currentPatch%shortest
do while(associated(currentCohort))
ft = currentCohort%pft
min_chite = currentCohort%hite - currentCohort%hite * EDPftvarcon_inst%crown(ft)
min_chite = currentCohort%hite - currentCohort%hite * prt_params%crown(ft)
max_chite = currentCohort%hite
do iv = 1,N_HITE_BINS
frac_canopy(iv) = 0.0_r8
! this layer is in the middle of the canopy
if(max_chite > maxh(iv).and.min_chite < minh(iv))then
frac_canopy(iv)= min(1.0_r8,dh / (currentCohort%hite*EDPftvarcon_inst%crown(ft)))
frac_canopy(iv)= min(1.0_r8,dh / (currentCohort%hite*prt_params%crown(ft)))
! this is the layer with the bottom of the canopy in it.
elseif(min_chite < maxh(iv).and.min_chite > minh(iv).and.max_chite > maxh(iv))then
frac_canopy(iv) = (maxh(iv) -min_chite ) / (currentCohort%hite*EDPftvarcon_inst%crown(ft))
frac_canopy(iv) = (maxh(iv) -min_chite ) / (currentCohort%hite*prt_params%crown(ft))
! this is the layer with the top of the canopy in it.
elseif(max_chite > minh(iv).and.max_chite < maxh(iv).and.min_chite < minh(iv))then
frac_canopy(iv) = (max_chite - minh(iv)) / (currentCohort%hite*EDPftvarcon_inst%crown(ft))
frac_canopy(iv) = (max_chite - minh(iv)) / (currentCohort%hite*prt_params%crown(ft))
elseif(max_chite < maxh(iv).and.min_chite > minh(iv))then !the whole cohort is within this layer.
frac_canopy(iv) = 1.0_r8
endif
Expand Down Expand Up @@ -1709,11 +1709,11 @@ subroutine leaf_area_profile( currentSite )

layer_top_hite = currentCohort%hite - &
( real(iv-1,r8)/currentCohort%NV * currentCohort%hite * &
EDPftvarcon_inst%crown(currentCohort%pft) )
prt_params%crown(currentCohort%pft) )

layer_bottom_hite = currentCohort%hite - &
( real(iv,r8)/currentCohort%NV * currentCohort%hite * &
EDPftvarcon_inst%crown(currentCohort%pft) )
prt_params%crown(currentCohort%pft) )

fraction_exposed = 1.0_r8
if(currentSite%snow_depth > layer_top_hite)then
Expand Down
2 changes: 1 addition & 1 deletion biogeochem/EDCohortDynamicsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ subroutine create_cohort(currentSite, patchptr, pft, nn, hite, coage, dbh, &
call InitHydrCohort(currentSite,new_cohort)

! This calculates node heights
call UpdatePlantHydrNodes(new_cohort%co_hydr,new_cohort%pft, &
call UpdatePlantHydrNodes(new_cohort,new_cohort%pft, &
new_cohort%hite,currentSite%si_hydr)

! This calculates volumes and lengths
Expand Down
16 changes: 11 additions & 5 deletions biogeochem/FatesAllometryMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,7 @@ end subroutine h2d_martcano
! =====================================================================================


subroutine CrownDepth(height,crown_depth)
subroutine CrownDepth(height,ft,crown_depth)

! -----------------------------------------------------------------------------------
! This routine returns the depth of a plant's crown. Which is the length
Expand All @@ -1993,14 +1993,20 @@ subroutine CrownDepth(height,crown_depth)
! optioned.
! -----------------------------------------------------------------------------------

real(r8),intent(in) :: height ! The height of the plant [m]
real(r8),intent(in) :: height ! The height of the plant [m]
integer,intent(in) :: ft ! functional type index
real(r8),intent(out) :: crown_depth ! The depth of the crown [m]

! Alternative Hypothesis:
! crown depth from Poorter, Bongers & Bongers
! crown_depth = exp(-1.169_r8)*cCohort%hite**1.098_r8

crown_depth = min(height,0.1_r8)

! Alternative Hypothesis:
! Original FATES crown depth heigh used for hydraulics
! crown_depth = min(height,0.1_r8)

crown_depth = prt_params%crown(ft) * height


return
end subroutine CrownDepth
Expand Down
Loading

0 comments on commit 5d449e4

Please sign in to comment.