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

Active crown scott 2001 #1108

Draft
wants to merge 93 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
7193bc6
Passive Crown Fire development
Sep 4, 2019
bad24e4
Correct EQ for crown_FI
Sep 4, 2019
093db93
Update and correct variable names for passive crown fire
Sep 5, 2019
f3077df
Update name for crown_fire flag
Sep 5, 2019
f28f546
Remove redundant details within evaluation for crown fire ignition
Sep 5, 2019
79a8f5e
Add q_dry as available to entire fire module
Sep 5, 2019
ae0a5e7
Change name for passive_crown fire intensity
Sep 5, 2019
cafdac5
Revert q_dry to be local within fire ROS subroutine
Sep 6, 2019
f908f8e
Introducing active crown fire equations
slevis-lmwg Sep 7, 2019
5558381
Update fire/SFMainMod.F90
jkshuman Sep 9, 2019
1d23671
Clean up calculation of fraction crown burnt
Sep 9, 2019
764d6c4
Re-order for clearer calculation of clear branch bole height
Sep 9, 2019
a1ebec9
Clean up else statements for scorch height fraction crown burnt
Sep 10, 2019
a0e59a2
Add Cohort variables for crown damage to CohortDynamics
Sep 10, 2019
1365bf4
Define variable name for crown fire damage
Sep 10, 2019
45377c9
Zero new cohort values for crown damage
Sep 10, 2019
73c8762
Add missing parentheses crown damage conditional
Sep 10, 2019
c288d76
Clean up crown damage subroutine
Sep 10, 2019
0fc0c14
Remove unnecssary line character crown damage routine
Sep 10, 2019
fa1973f
Define new crown damage variables in EDTypes
Sep 10, 2019
ee2e576
Update to only "nan" crown damage variables in EDCohortDynamics
Sep 10, 2019
39a39f3
Remove extra parentheses crown damage
Sep 10, 2019
703d87f
Add crown_fire_threshold read from EDTypes
Sep 10, 2019
7e691e0
Update crown damage for clarity with surface fires
Sep 10, 2019
52b0734
Update crown damage variables to be local to subroutine
Sep 11, 2019
cce9213
Remove local crown damage variables from EDTypes
Sep 11, 2019
eb6e6d1
Remove local crown damage variables from EDTypes, another location
Sep 11, 2019
8ac2053
Merge remote-tracking branch 'jkshuman_repo/passive_crown_fire' into …
slevis-lmwg Sep 11, 2019
dc1ba20
Zero cambial_mort inside cambial_damage_kill not zero_cohort
Sep 12, 2019
8eeb2c7
Merge remote-tracking branch 'jkshuman_repo/passive_crown_fire' into …
slevis-lmwg Sep 12, 2019
e11602f
Update drying_ratio value in params file
Sep 12, 2019
f00187f
One-line correction in active crown-fire code
slevis-lmwg Sep 16, 2019
9465439
Merge branch 'master' of https://github.com/NGEET/fates into passive_…
Sep 24, 2019
5587782
Update crown_ignite_energy to PFT level
Sep 25, 2019
76ed1fa
Update crown_ignite name in EDPftvarcon
Sep 25, 2019
2feddcb
Add paran in SFMain
Sep 25, 2019
0aef4a9
Add comment with equation for crown_ignite_energy per VanWagner 1977
Sep 30, 2019
8d582b7
Add comment with details for empirical value C in passive_crown_FI
Sep 30, 2019
29fd4ff
Update flag to logical, clean up conditional
Sep 30, 2019
cb67c91
Revert passive crown fire flag to binary
Oct 1, 2019
5b84356
Update variable names in EDTypes
Oct 1, 2019
188e683
Update passive_crown_fire in EDTypes
Oct 1, 2019
4f017a2
Update variable name and comments crown_fire flag
Oct 1, 2019
3e0d8f7
Update fire/SFMainMod.F90
jkshuman Oct 3, 2019
12dc816
Merge remote-tracking branch 'jkshuman_repo/passive_crown_fire' into …
slevis-lmwg Oct 3, 2019
ce4933a
Use crown_fire param as real to scale effects of passive crown fires
slevis-lmwg Oct 4, 2019
aeefb59
Update fire/SFMainMod.F90
jkshuman Oct 4, 2019
5a6fcc0
Update fire/SFMainMod.F90
jkshuman Oct 4, 2019
2917215
Merge branch 'passive_crown_fire' into active_crown_fire
slevis-lmwg Oct 4, 2019
9997422
Add comment about passive crown fire survival
Oct 4, 2019
9ba50cb
Merge branch 'passive_crown_fire' into active_crown_fire
slevis-lmwg Oct 4, 2019
012e363
Revert zero variables to again occur in EDCohortDynamics
Oct 7, 2019
c3191bf
Merge remote-tracking branch 'jkshuman_repo/passive_crown_fire' into …
slevis-lmwg Oct 7, 2019
d377f27
Correction that fixes problem of no fire after year 1
slevis-lmwg Oct 8, 2019
402dfd0
Correct crown_fuel_bulkd formula to include n and c_area
slevis-lmwg Oct 9, 2019
b762dad
This is only a test
slevis-lmwg Oct 11, 2019
9a3fac0
Effect of active crown fire on the Rate of Spread
slevis-lmwg Oct 25, 2019
6ed93b8
Small corrections to previous commit
slevis-lmwg Oct 26, 2019
b084604
Completing the addition of active crown fire effects
slevis-lmwg Oct 27, 2019
f4d99f8
Improvement in code organization
slevis-lmwg Oct 27, 2019
e6fff14
Added missing pointer
slevis-lmwg Oct 28, 2019
b715f76
Add calculation for canopy base height for crown fire
Nov 21, 2019
380666c
Update canopy_base_height to patch level for crown fire
Nov 22, 2019
299cbf5
Clean up crown damage SFMain
Nov 23, 2019
f244279
Update passive fire fuels in crown damage
Nov 24, 2019
88fe84d
Merge branch 'fire-threshold' into passive_crown_fire
Nov 25, 2019
ea6ecd9
Update fire parameter names foliar_moisture, crown_fire_flag
Nov 25, 2019
8b9565e
Update var namaes for crown fire and foliar moisture
Nov 25, 2019
23ccb3f
SH as cohort level in crown damage/SFMain
Nov 25, 2019
339aca2
Clean up patch level crown fire calculations
Nov 26, 2019
d1b85f9
Revisions from code review
slevis-lmwg Nov 27, 2019
11552e7
Merge remote-tracking branch 'jkshuman_repo/passive_crown_fire' into …
slevis-lmwg Nov 27, 2019
c9e5cbc
Corrections needed to build and start a run
slevis-lmwg Nov 27, 2019
e66d24f
Minor cleanup
slevis-lmwg Dec 2, 2019
3512d1e
Adding my lightning mods to this branch
slevis-lmwg Dec 3, 2019
7dd6019
Merge branch 'master' into active_crown_fire
slevis-lmwg Mar 31, 2022
58ea52e
Resolve conflicts in EDPatchDynamicsMod.F90
slevis-lmwg Mar 31, 2022
f401107
Resolve conflicts in EDTypesMod.F90 and fates_params_default.cdl
slevis-lmwg Apr 1, 2022
d4f8a03
Resolve another conflict in EDTypesMod.F90
slevis-lmwg Apr 1, 2022
fe28162
Resolve conflicts in SFMainMod.F90
slevis-lmwg Apr 1, 2022
d2d1de3
Resolve conflict in FatesHistoryInterfaceMod.F90
slevis-lmwg Apr 1, 2022
18ae658
Merge branch 'master' into active_crown_fire
slevis-lmwg Apr 1, 2022
742d5cd
Added a TODO comment and made a history field active
slevis-lmwg Apr 1, 2022
2a47137
One-line fix: code builds now
slevis-lmwg Apr 11, 2022
0a3668b
Fix to fates_fire_active_crown_fire: Code runs now
slevis-lmwg Apr 11, 2022
fc88363
Correcting active_crown_fire_flg in code that's commented out for now
slevis-lmwg Apr 11, 2022
85f0dba
Update active crown fire per Scott and Reinhardt 2001, Rothermel 1977
jkshuman Apr 17, 2022
a93375e
Fix solve for phi wind in active fire
jkshuman Apr 18, 2022
456706f
comment check for active crown fire
jkshuman Apr 19, 2022
32684f7
Update wind calculation for crown_frac_burnt
jkshuman May 5, 2022
5cb79fe
Include conversion FM10 fuels ton/acre to kg/m2
jkshuman May 6, 2022
5ff191b
Merge branch 'main' into active_crown_Scott_2001
Oct 24, 2023
3090ea4
fix merge conflicts
Oct 26, 2023
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
1 change: 1 addition & 0 deletions biogeochem/EDPatchDynamicsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2500,6 +2500,7 @@ subroutine fuse_2_patches(csite, dp, rp)
rp%ros_back = (dp%ros_back*dp%area + rp%ros_back*rp%area) * inv_sum_area
rp%scorch_ht(:) = (dp%scorch_ht(:)*dp%area + rp%scorch_ht(:)*rp%area) * inv_sum_area
rp%frac_burnt = (dp%frac_burnt*dp%area + rp%frac_burnt*rp%area) * inv_sum_area
rp%canopy_bulk_density = (dp%canopy_bulk_density*dp%area + rp%canopy_bulk_density*rp%area) * inv_sum_area
rp%burnt_frac_litter(:) = (dp%burnt_frac_litter(:)*dp%area + rp%burnt_frac_litter(:)*rp%area) * inv_sum_area
rp%btran_ft(:) = (dp%btran_ft(:)*dp%area + rp%btran_ft(:)*rp%area) * inv_sum_area
rp%zstar = (dp%zstar*dp%area + rp%zstar*rp%area) * inv_sum_area
Expand Down
9 changes: 8 additions & 1 deletion biogeochem/FatesPatchMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ module FatesPatchMod
real(r8) :: fuel_eff_moist ! effective avearage fuel moisture content of the ground fuel
! (incl. live grasses. omits 1000hr fuels)
real(r8) :: litter_moisture(nfsc) ! moisture of litter [m3/m3]
real(r8) :: canopy_bulk_density


! fire spread
real(r8) :: ros_front ! rate of forward spread of fire [m/min]
Expand All @@ -204,6 +206,7 @@ module FatesPatchMod
real(r8) :: tau_l ! duration of lethal heating [min]
real(r8) :: fi ! average fire intensity of flaming front [kJ/m/s] or [kW/m]
integer :: fire ! is there a fire? [1=yes; 0=no]
integer :: active_crown_fire_flg
real(r8) :: fd ! fire duration [min]

! fire effects
Expand Down Expand Up @@ -382,9 +385,11 @@ subroutine NanValues(this)
this%tau_l = nan
this%fi = nan
this%fire = fates_unset_int
this%active_crown_fire_flg = fates_unset_int
this%fd = nan
this%scorch_ht(:) = nan
this%frac_burnt = nan
this%canopy_bulk_density = nan
this%tfc_ros = nan
this%burnt_frac_litter(:) = nan

Expand Down Expand Up @@ -459,7 +464,8 @@ subroutine ZeroValues(this)
this%fi = 0.0_r8
this%fd = 0.0_r8
this%scorch_ht(:) = 0.0_r8
this%frac_burnt = 0.0_r8
this%frac_burnt = 0.0_r8
this%canopy_bulk_density = 0.0_r8
this%tfc_ros = 0.0_r8
this%burnt_frac_litter(:) = 0.0_r8

Expand Down Expand Up @@ -732,6 +738,7 @@ subroutine Dump(this)
write(fates_log(),*) 'pa%c_stomata = ',this%c_stomata
write(fates_log(),*) 'pa%c_lblayer = ',this%c_lblayer
write(fates_log(),*) 'pa%disturbance_rates = ',this%disturbance_rates(:)
write(fates_log(),*) 'pa%active_crown_fire_flg = ', this%active_crown_fire_flg
write(fates_log(),*) 'pa%anthro_disturbance_label = ',this%anthro_disturbance_label
write(fates_log(),*) '----------------------------------------'

Expand Down
825 changes: 649 additions & 176 deletions fire/SFMainMod.F90

Large diffs are not rendered by default.

7 changes: 0 additions & 7 deletions main/EDParamsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -605,9 +605,6 @@ subroutine FatesRegisterParams(fates_params)
call fates_params%RegisterParameter(name=ED_name_history_height_bin_edges, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names_height)

call fates_params%RegisterParameter(name=fates_name_active_crown_fire, dimension_shape=dimension_shape_scalar, &
dimension_names=dim_names_scalar)

call fates_params%RegisterParameter(name=fates_name_cg_strikes, dimension_shape=dimension_shape_scalar, &
dimension_names=dim_names_scalar)

Expand Down Expand Up @@ -815,10 +812,6 @@ subroutine FatesReceiveParams(fates_params)
call fates_params%RetrieveParameter(name=name_dev_arbitrary, &
data=dev_arbitrary)

call fates_params%RetrieveParameter(name=fates_name_active_crown_fire, &
data=tmpreal)
active_crown_fire = (abs(tmpreal-1.0_r8)<nearzero)

call fates_params%RetrieveParameter(name=fates_name_cg_strikes, &
data=cg_strikes)

Expand Down
17 changes: 13 additions & 4 deletions main/EDPftvarcon.F90
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ module EDPftvarcon
real(r8), allocatable :: z0mr(:) ! ratio of roughness length of vegetation to height (-)
real(r8), allocatable :: displar(:) ! ratio of displacement height to canopy top height
real(r8), allocatable :: bark_scaler(:) ! scaler from dbh to bark thickness. For fire model.
real(r8), allocatable :: crown_kill(:) ! scaler on fire death. For fire model.
real(r8), allocatable :: initd(:) ! initial seedling density

real(r8), allocatable :: crown_kill(:) ! crown resistance to fire. (1 = none) For fire model.
real(r8), allocatable :: active_crown_fire(:) ! Is plant susceptible to active crown fire?
real(r8), allocatable :: initd(:) ! initial seedling density
real(r8), allocatable :: seed_suppl(:) ! seeds that come from outside the gridbox.
real(r8), allocatable :: bb_slope(:) ! ball berry slope parameter
real(r8), allocatable :: medlyn_slope(:) ! Medlyn slope parameter KPa^0.5
Expand Down Expand Up @@ -385,6 +385,10 @@ subroutine Register_PFT(this, fates_params)
call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names, lower_bounds=dim_lower_bound)

name = 'fates_fire_active_crown_fire'
call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names, lower_bounds=dim_lower_bound)

name = 'fates_recruit_init_density'
call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names, lower_bounds=dim_lower_bound)
Expand Down Expand Up @@ -826,6 +830,10 @@ subroutine Receive_PFT(this, fates_params)
call fates_params%RetrieveParameterAllocate(name=name, &
data=this%crown_kill)

name = 'fates_fire_active_crown_fire'
call fates_params%RetrieveParameterAllocate(name=name, &
data=this%active_crown_fire)

name = 'fates_recruit_init_density'
call fates_params%RetrieveParameterAllocate(name=name, &
data=this%initd)
Expand Down Expand Up @@ -1651,6 +1659,7 @@ subroutine FatesReportPFTParams(is_master)
write(fates_log(),fmt0) 'displar = ',EDPftvarcon_inst%displar
write(fates_log(),fmt0) 'bark_scaler = ',EDPftvarcon_inst%bark_scaler
write(fates_log(),fmt0) 'crown_kill = ',EDPftvarcon_inst%crown_kill
write(fates_log(),fmt0) 'active_crown_fire = ',EDPftvarcon_inst%active_crown_fire
write(fates_log(),fmt0) 'initd = ',EDPftvarcon_inst%initd
write(fates_log(),fmt0) 'seed_suppl = ',EDPftvarcon_inst%seed_suppl
write(fates_log(),fmt0) 'bb_slope = ',EDPftvarcon_inst%bb_slope
Expand Down Expand Up @@ -1918,7 +1927,7 @@ subroutine FatesCheckParams(is_master)
! xl must be between -0.4 and 0.6 according to Bonan (2019) doi:10.1017/9781107339217 pg. 238
!-----------------------------------------------------------------------------------
if (EDPftvarcon_inst%xl(ipft) < -0.4 .or. EDPftvarcon_inst%xl(ipft) > 0.6) then
write(fates_log(),*) 'fates_rad_leaf_xl for pft ', ipft, ' is outside the allowed range of -0.6 to 0.4'
write(fates_log(),*) 'fates_rad_leaf_xl for pft ', ipft, ' is outside the allowed range of -0.4 to 0.6'
write(fates_log(),*) 'Aborting'
call endrun(msg=errMsg(sourcefile, __LINE__))
end if
Expand Down
3 changes: 3 additions & 0 deletions main/EDTypesMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ module EDTypesMod
integer, parameter, public :: phen_dstat_timeon = 3 ! Leaves on due to time exceedance (drought phenology)
integer, parameter, public :: phen_dstat_pshed = 4 ! Leaves partially abscissing (drought phenology)

real(r8), parameter, public :: crown_fire_threshold = 200.0_r8 ! threshold for passive crown fire ignition. KWm-2 (Bessie & Johnson 1995) TODO slevis: see corresponding todo in SFMainMod.F90


! PATCH FUSION
real(r8), parameter, public :: force_patchfuse_min_biomass = 0.005_r8 ! min biomass (kg / m2 patch area) below which to force-fuse patches
real(r8), parameter, public :: patch_fusion_tolerance_relaxation_increment = 1.1_r8 ! amount by which to increment patch fusion threshold
Expand Down
6 changes: 3 additions & 3 deletions main/FatesHistoryInterfaceMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -6926,7 +6926,7 @@ subroutine define_history_vars(this, initialize_variables)

call this%set_history_var(vname='FATES_SCORCH_HEIGHT_APPF',units = 'm', &
long='SPITFIRE flame Scorch Height (calculated per PFT in each patch age bin)', &
use_default='inactive', avgflag='A', vtype=site_agepft_r8, &
use_default='active', avgflag='A', vtype=site_agepft_r8, &
hlms='CLM:ALM', upfreq=1, ivar=ivar, &
initialize=initialize_variables, index = ih_scorch_height_si_agepft)

Expand Down Expand Up @@ -7124,14 +7124,14 @@ subroutine define_history_vars(this, initialize_variables)
call this%set_history_var(vname='FATES_MORTALITY_CROWNSCORCH_SZPF', &
units = 'm-2 yr-1', &
long='fire mortality from crown scorch by pft/size in number of plants per m2 per year', &
use_default='inactive', avgflag='A', vtype=site_size_pft_r8, &
use_default='active', avgflag='A', vtype=site_size_pft_r8, &
hlms='CLM:ALM', upfreq=1, ivar=ivar, &
initialize=initialize_variables, index = ih_crownfiremort_si_scpf)

call this%set_history_var(vname='FATES_MORTALITY_CAMBIALBURN_SZPF', &
units = 'm-2 yr-1', &
long='fire mortality from cambial burn by pft/size in number of plants per m2 per year', &
use_default='inactive', avgflag='A', vtype=site_size_pft_r8, &
use_default='active', avgflag='A', vtype=site_size_pft_r8, &
hlms='CLM:ALM', upfreq=1, ivar=ivar, &
initialize=initialize_variables, index = ih_cambialfiremort_si_scpf)

Expand Down