From 40cd06be22660b19fd32d298b9f8f7a336bf3036 Mon Sep 17 00:00:00 2001 From: Marcos Longo Date: Sat, 3 Dec 2022 18:16:54 -0800 Subject: [PATCH 1/2] New option allometry for storage. Option 2 now scales storage with the untrimmed leaf biomass, which allows higher storage when canopy is trimmed. --- biogeochem/FatesAllometryMod.F90 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/biogeochem/FatesAllometryMod.F90 b/biogeochem/FatesAllometryMod.F90 index 1a2b16283e..39fe02cfee 100644 --- a/biogeochem/FatesAllometryMod.F90 +++ b/biogeochem/FatesAllometryMod.F90 @@ -1085,6 +1085,8 @@ subroutine bstore_allom(d,ipft,crowndamage, canopy_trim,bstore,dbstoredd) real(r8) :: bl ! Allometric target leaf biomass real(r8) :: dbldd ! Allometric target change in leaf biomass per cm + real(r8) :: blmax ! Allometric target leaf biomass (UNTRIMMED) + real(r8) :: dblmaxdd ! Allometric target change in leaf biomass per cm (UNTRIMMED) ! TODO: allom_stmode needs to be added to the parameter file @@ -1098,7 +1100,12 @@ subroutine bstore_allom(d,ipft,crowndamage, canopy_trim,bstore,dbstoredd) call bleaf(d,ipft, crowndamage, canopy_trim, bl, dbldd) call bstore_blcushion(d,bl,dbldd,cushion,ipft,bstore,dbstoredd) - + + case(2) ! Storage is constant proportionality of untrimmed maximum leaf + ! biomass (ie cushion * bleaf) + call blmax_allom(d,ipft,blmax,dblmaxdd) + call bstore_blcushion(d,blmax,dblmaxdd,cushion,ipft,bstore,dbstoredd) + case DEFAULT write(fates_log(),*) 'An undefined fine storage allometry was specified: ', & allom_stmode From e27dd998b95b2be55d87cc0313e02075f7d9e357 Mon Sep 17 00:00:00 2001 From: Marcos Longo Date: Mon, 23 Jan 2023 12:44:34 -0800 Subject: [PATCH 2/2] Added comments on the different allom_stmode flags. --- biogeochem/FatesAllometryMod.F90 | 4 +--- parameter_files/fates_params_default.cdl | 2 +- parteh/PRTParametersMod.F90 | 6 +++++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/biogeochem/FatesAllometryMod.F90 b/biogeochem/FatesAllometryMod.F90 index 39fe02cfee..7973d2e3bf 100644 --- a/biogeochem/FatesAllometryMod.F90 +++ b/biogeochem/FatesAllometryMod.F90 @@ -1089,8 +1089,6 @@ subroutine bstore_allom(d,ipft,crowndamage, canopy_trim,bstore,dbstoredd) real(r8) :: dblmaxdd ! Allometric target change in leaf biomass per cm (UNTRIMMED) - ! TODO: allom_stmode needs to be added to the parameter file - associate( allom_stmode => prt_params%allom_stmode(ipft), & cushion => prt_params%cushion(ipft) ) @@ -1102,7 +1100,7 @@ subroutine bstore_allom(d,ipft,crowndamage, canopy_trim,bstore,dbstoredd) call bstore_blcushion(d,bl,dbldd,cushion,ipft,bstore,dbstoredd) case(2) ! Storage is constant proportionality of untrimmed maximum leaf - ! biomass (ie cushion * bleaf) + ! biomass (ie cushion * bleaf_max) call blmax_allom(d,ipft,blmax,dblmaxdd) call bstore_blcushion(d,blmax,dblmaxdd,cushion,ipft,bstore,dbstoredd) diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index d1fcd4c9a3..c5ddba36c6 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -148,7 +148,7 @@ variables: fates_allom_smode:long_name = "sapwood allometry function index." ; double fates_allom_stmode(fates_pft) ; fates_allom_stmode:units = "index" ; - fates_allom_stmode:long_name = "storage allometry function index." ; + fates_allom_stmode:long_name = "storage allometry function index: 1) Storage proportional to leaf biomass (with trimming), 2) Storage proportional to maximum leaf biomass (not trimmed)" ; double fates_allom_zroot_k(fates_pft) ; fates_allom_zroot_k:units = "unitless" ; fates_allom_zroot_k:long_name = "scale coefficient of logistic rooting depth model" ; diff --git a/parteh/PRTParametersMod.F90 b/parteh/PRTParametersMod.F90 index 0346009745..1bd611edff 100644 --- a/parteh/PRTParametersMod.F90 +++ b/parteh/PRTParametersMod.F90 @@ -98,7 +98,11 @@ module PRTParametersMod real(r8), allocatable :: allom_amode(:) ! AGB allometry function type real(r8), allocatable :: allom_cmode(:) ! Coarse root allometry function type real(r8), allocatable :: allom_smode(:) ! sapwood allometry function type - real(r8), allocatable :: allom_stmode(:) ! storage allometry functional type + real(r8), allocatable :: allom_stmode(:) ! storage allometry functional type + ! 0 - storage is proportional to maximum leaf biomass + ! (considering trimmed) + ! 1 - storage is proportional to maximum leaf biomass + ! (untrimmed) ! (HARD-CODED FOR TIME BEING, RGK 11-2017) real(r8), allocatable :: allom_la_per_sa_int(:) ! Leaf area to sap area conversion, intercept ! (sapwood area / leaf area) [cm2/m2]