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

Passive Crown Fire development #572

Closed
wants to merge 74 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 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
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
dc1ba20
Zero cambial_mort inside cambial_damage_kill not zero_cohort
Sep 12, 2019
e11602f
Update drying_ratio value in params file
Sep 12, 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
aeefb59
Update fire/SFMainMod.F90
jkshuman Oct 4, 2019
5a6fcc0
Update fire/SFMainMod.F90
jkshuman Oct 4, 2019
9997422
Add comment about passive crown fire survival
Oct 4, 2019
012e363
Revert zero variables to again occur in EDCohortDynamics
Oct 7, 2019
277352c
CG scaler on lightning, NF>0 for fire event
Nov 6, 2019
51ca42c
Make NF site level variable
Nov 6, 2019
ace251b
Update to NF and fire_intensity subroutine
Nov 6, 2019
20944a6
Update to NF in EDInit
Nov 6, 2019
c79a977
Remove zero of NF in SFMain
Nov 7, 2019
281bce1
Update scorch height to cohort level SFMain,EDTypes
Nov 8, 2019
c3f7c23
Turn off patch level scorch height history var
Nov 8, 2019
999fa6b
Turn off SH history variable
Nov 8, 2019
a98f7d6
Add SH to EDCohortDynamics
Nov 8, 2019
37b478e
Remove SH from fuse patch EDPatchDynamics
Nov 8, 2019
8bc50d2
include frac_burnt in FI calculation
Nov 9, 2019
9747a76
Update NF conditional to real SFMain
Nov 18, 2019
27748c5
Track all fires. Update energy threshold for fires to zero
Nov 19, 2019
fe7be5d
Fire threshold of 0.01
Nov 19, 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
7dfced0
Clean up crown scorch SFMain
Nov 23, 2019
adca1fb
remove extra lines crown scorch SFMain
Nov 23, 2019
6fbba17
Remove extra paren crown scorch
Nov 23, 2019
bd50250
Add end if crown scorch SFMain
Nov 23, 2019
299cbf5
Clean up crown damage SFMain
Nov 23, 2019
f244279
Update passive fire fuels in crown damage
Nov 24, 2019
9a648ea
Maintain 50kW/m threshold for tracking fires
Nov 25, 2019
2ace55f
Add Van Wagner ref crown scrorch SFMain
Nov 25, 2019
38388ad
Add ref and zero patch vars in area_burnt_intensity
Nov 25, 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
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
7 changes: 6 additions & 1 deletion biogeochem/EDCohortDynamicsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -534,11 +534,14 @@ subroutine nan_cohort(cc_p)
currentCohort%ddbhdt = nan ! time derivative of dbh

! FIRE

currentCohort%sh = nan ! scorch height affecting crown (m)
currentCohort%fraction_crown_burned = nan ! proportion of crown affected by fire
currentCohort%cambial_mort = nan ! probability that trees dies due to cambial char P&R (1986)
currentCohort%crownfire_mort = nan ! probability of tree post-fire mortality due to crown scorch
currentCohort%fire_mort = nan ! post-fire mortality from cambial and crown damage assuming two are independent


end subroutine nan_cohort

!-------------------------------------------------------------------------------------!
Expand Down Expand Up @@ -579,6 +582,7 @@ subroutine zero_cohort(cc_p)

currentcohort%year_net_uptake(:) = 999._r8 ! this needs to be 999, or trimming of new cohorts will break.
currentcohort%ts_net_uptake(:) = 0._r8
currentcohort%sh = 0._r8
currentcohort%fraction_crown_burned = 0._r8
currentCohort%size_class = 1
currentCohort%seed_prod = 0._r8
Expand Down Expand Up @@ -1652,7 +1656,8 @@ subroutine copy_cohort( currentCohort,copyc )
n%dhdt = o%dhdt
n%ddbhdt = o%ddbhdt

! FIRE
! FIRE
n%sh = o%sh
n%fraction_crown_burned = o%fraction_crown_burned
n%fire_mort = o%fire_mort
n%crownfire_mort = o%crownfire_mort
Expand Down
2 changes: 0 additions & 2 deletions biogeochem/EDPatchDynamicsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1980,7 +1980,6 @@ subroutine zero_patch(cp_p)
currentPatch%fire = 999 ! sr decide_fire.1=fire hot enough to proceed. 0=stop everything- no fires today
currentPatch%fd = 0.0_r8 ! fire duration (mins)
currentPatch%ros_back = 0.0_r8 ! backward ros (m/min)
currentPatch%sh = 0.0_r8 ! average scorch height for the patch(m)
currentPatch%frac_burnt = 0.0_r8 ! fraction burnt daily
currentPatch%burnt_frac_litter(:) = 0.0_r8
currentPatch%btran_ft(:) = 0.0_r8
Expand Down Expand Up @@ -2296,7 +2295,6 @@ subroutine fuse_2_patches(csite, dp, rp)
rp%fi = (dp%fi*dp%area + rp%fi*rp%area) * inv_sum_area
rp%fd = (dp%fd*dp%area + rp%fd*rp%area) * inv_sum_area
rp%ros_back = (dp%ros_back*dp%area + rp%ros_back*rp%area) * inv_sum_area
rp%sh = (dp%sh*dp%area + rp%sh*rp%area) * inv_sum_area
rp%frac_burnt = (dp%frac_burnt*dp%area + rp%frac_burnt*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
Expand Down
393 changes: 249 additions & 144 deletions fire/SFMainMod.F90

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions main/EDInitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ subroutine zero_site( site_in )

! FIRE
site_in%acc_ni = 0.0_r8 ! daily nesterov index accumulating over time. time unlimited theoretically.
site_in%NF = 0.0_r8 ! daily lightning strikes per km2
site_in%frac_burnt = 0.0_r8 ! burn area read in from external file

do el=1,num_elements
Expand Down Expand Up @@ -280,6 +281,7 @@ subroutine set_site_properties( nsites, sites )
sites(s)%dstatus = dstat

sites(s)%acc_NI = acc_NI
sites(s)%NF = 0.0_r8
sites(s)%frac_burnt = 0.0_r8


Expand Down
14 changes: 12 additions & 2 deletions main/EDPftvarcon.F90
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ module EDPftvarcon
real(r8), allocatable :: crown(:) ! fraction of the height of the plant
! that is occupied by crown. For fire model.
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 :: 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 :: seed_suppl(:) ! seeds that come from outside the gridbox.
real(r8), allocatable :: BB_slope(:) ! ball berry slope parameter

real(r8), allocatable :: seed_alloc_mature(:) ! fraction of carbon balance allocated to
Expand Down Expand Up @@ -381,6 +382,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_initd'
call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names, lower_bounds=dim_lower_bound)
Expand Down Expand Up @@ -813,6 +818,10 @@ subroutine Receive_PFT(this, fates_params)
call fates_params%RetreiveParameterAllocate(name=name, &
data=this%crown_kill)

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

name = 'fates_recruit_initd'
call fates_params%RetreiveParameterAllocate(name=name, &
data=this%initd)
Expand Down Expand Up @@ -1722,6 +1731,7 @@ subroutine FatesReportPFTParams(is_master)
write(fates_log(),fmt0) 'crown = ',EDPftvarcon_inst%crown
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
9 changes: 7 additions & 2 deletions main/EDTypesMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ module EDTypesMod
integer, parameter, public :: lg_sf = 6 ! array index of live grass pool for spitfire

real(r8), parameter, public :: fire_threshold = 50.0_r8 ! threshold for fires that spread or go out. KWm-2 (Pyne 1986)
real(r8), parameter, public :: crown_fire_threshold = 200.0_r8 ! threshold for passive crown fire ignition. KWm-2 (Bessie & Johnson 1995)
jkshuman marked this conversation as resolved.
Show resolved Hide resolved


! 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
Expand Down Expand Up @@ -342,7 +344,9 @@ module EDTypesMod
real(r8) :: dbdeaddt ! time derivative of dead biomass : KgC/year

! FIRE
real(r8) :: sh ! scorch height: m
real(r8) :: fraction_crown_burned ! proportion of crown affected by fire:-
real(r8) :: passive_crown_fire_flg ! flag for passive crown fire ignition (1=ignition)
real(r8) :: cambial_mort ! probability that trees dies due to cambial char
! (conditional on the tree being subjected to the fire)
real(r8) :: crownfire_mort ! probability of tree post-fire mortality
Expand Down Expand Up @@ -519,7 +523,6 @@ module EDTypesMod
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
real(r8) :: fd ! fire duration: mins
real(r8) :: sh ! average scorch height: m

! FIRE EFFECTS
real(r8) :: frac_burnt ! fraction burnt: frac gridcell/day
Expand Down Expand Up @@ -687,7 +690,8 @@ module EDTypesMod
real(r8) :: wind ! daily wind in m/min for Spitfire units
real(r8) :: acc_ni ! daily nesterov index accumulating over time.
real(r8) :: fdi ! daily probability an ignition event will start a fire
real(r8) :: frac_burnt ! fraction of soil burnt in this day.
real(r8) :: NF ! daily ignitions in km2
real(r8) :: frac_burnt ! fraction of area burnt in this day.

! PLANT HYDRAULICS
type(ed_site_hydr_type), pointer :: si_hydr
Expand Down Expand Up @@ -1009,6 +1013,7 @@ subroutine dump_cohort(ccohort)
write(fates_log(),*) 'co%ddbhdt = ', ccohort%ddbhdt
write(fates_log(),*) 'co%dbdeaddt = ', ccohort%dbdeaddt
write(fates_log(),*) 'co%fraction_crown_burned = ', ccohort%fraction_crown_burned
write(fates_log(),*) 'co%passive_crown_fire_flg = ', ccohort%passive_crown_fire_flg
write(fates_log(),*) 'co%fire_mort = ', ccohort%fire_mort
write(fates_log(),*) 'co%crownfire_mort = ', ccohort%crownfire_mort
write(fates_log(),*) 'co%cambial_mort = ', ccohort%cambial_mort
Expand Down
14 changes: 7 additions & 7 deletions main/FatesHistoryInterfaceMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ module FatesHistoryInterfaceMod
integer :: ih_TFC_ROS_pa
integer :: ih_fire_intensity_pa
integer :: ih_fire_area_pa
integer :: ih_scorch_height_pa
! integer :: ih_scorch_height_pa
integer :: ih_fire_fuel_bulkd_pa
integer :: ih_fire_fuel_eff_moist_pa
integer :: ih_fire_fuel_sav_pa
Expand Down Expand Up @@ -1631,7 +1631,7 @@ subroutine update_history_dyn(this,nc,nsites,sites)
hio_effect_wspeed_pa => this%hvars(ih_effect_wspeed_pa)%r81d, &
hio_fire_intensity_pa => this%hvars(ih_fire_intensity_pa)%r81d, &
hio_fire_area_pa => this%hvars(ih_fire_area_pa)%r81d, &
hio_scorch_height_pa => this%hvars(ih_scorch_height_pa)%r81d, &
! hio_scorch_height_pa => this%hvars(ih_scorch_height_pa)%r81d, &
hio_fire_fuel_bulkd_pa => this%hvars(ih_fire_fuel_bulkd_pa)%r81d, &
hio_fire_fuel_eff_moist_pa => this%hvars(ih_fire_fuel_eff_moist_pa)%r81d, &
hio_fire_fuel_sav_pa => this%hvars(ih_fire_fuel_sav_pa)%r81d, &
Expand Down Expand Up @@ -2438,7 +2438,7 @@ subroutine update_history_dyn(this,nc,nsites,sites)
hio_tfc_ros_pa(io_pa) = cpatch%TFC_ROS
hio_fire_intensity_pa(io_pa) = cpatch%FI
hio_fire_area_pa(io_pa) = cpatch%frac_burnt
hio_scorch_height_pa(io_pa) = cpatch%SH
!hio_scorch_height_pa(io_pa) = cpatch%SH
hio_fire_fuel_bulkd_pa(io_pa) = cpatch%fuel_bulkd
hio_fire_fuel_eff_moist_pa(io_pa) = cpatch%fuel_eff_moist
hio_fire_fuel_sav_pa(io_pa) = cpatch%fuel_sav
Expand Down Expand Up @@ -3906,10 +3906,10 @@ subroutine define_history_vars(this, initialize_variables)
avgflag='A', vtype=patch_r8, hlms='CLM:ALM', flushval=0.0_r8, upfreq=1, &
ivar=ivar, initialize=initialize_variables, index = ih_fire_area_pa )

call this%set_history_var(vname='SCORCH_HEIGHT', units='m', &
long='spitfire flame height:m', use_default='active', &
avgflag='A', vtype=patch_r8, hlms='CLM:ALM', flushval=0.0_r8, upfreq=1, &
ivar=ivar, initialize=initialize_variables, index = ih_scorch_height_pa )
!call this%set_history_var(vname='SCORCH_HEIGHT', units='m', &
! long='spitfire flame height:m', use_default='active', &
! avgflag='A', vtype=patch_r8, hlms='CLM:ALM', flushval=0.0_r8, upfreq=1, &
! ivar=ivar, initialize=initialize_variables, index = ih_scorch_height_pa )

call this%set_history_var(vname='fire_fuel_mef', units='m', &
long='spitfire fuel moisture', use_default='active', &
Expand Down
9 changes: 7 additions & 2 deletions parameter_files/fates_params_default.cdl
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ variables:
fates_displar:long_name = "Ratio of displacement height to canopy top height" ;
double fates_fire_alpha_SH(fates_pft) ;
fates_fire_alpha_SH:units = "NA" ;
fates_fire_alpha_SH:long_name = "spitfire parameter, alpha scorch height, Equation 16 Thonicke et al 2010" ;
fates_fire_alpha_SH:long_name = "spitfire parameter, alpha scorch height, EQ 16 Thonicke et al 2010" ;
double fates_fire_bark_scaler(fates_pft) ;
fates_fire_bark_scaler:units = "fraction" ;
fates_fire_bark_scaler:long_name = "the thickness of a cohorts bark as a fraction of its dbh" ;
Expand All @@ -131,7 +131,10 @@ variables:
fates_fire_crown_depth_frac:long_name = "the depth of a cohorts crown as a fraction of its height" ;
double fates_fire_crown_kill(fates_pft) ;
fates_fire_crown_kill:units = "NA" ;
fates_fire_crown_kill:long_name = "fire parameter, see equation 22 in Thonicke et al 2010" ;
fates_fire_crown_kill:long_name = "crown resistance to fire (1 = none), EQ 22 in Thonicke et al 2010" ;
double fates_fire_active_crown_fire(fates_pft) ;
fates_fire_active_crown_fire:units = "fraction" ;
fates_fire_active_crown_fire:long_name = "resistance to active crown fire (1=none)";
double fates_fr_fcel(fates_pft) ;
fates_fr_fcel:units = "fraction" ;
fates_fr_fcel:long_name = "Fine root litter cellulose fraction" ;
Expand Down Expand Up @@ -718,6 +721,8 @@ data:
fates_fire_crown_kill = 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775,
0.775, 0.775, 0.775, 0.775, 0.775 ;

fates_fire_active_crown_fire = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;

fates_fr_fcel = 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ;

fates_fr_flab = 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25,
Expand Down