@@ -431,7 +431,7 @@ subroutine disturbance_rates( site_in, bc_in)
431431 endif
432432
433433 ! Fire Disturbance Rate
434- currentPatch% disturbance_rates(dtype_ifire) = currentPatch% frac_burnt
434+ currentPatch% disturbance_rates(dtype_ifire) = currentPatch% frac_burnt
435435
436436
437437 ! Fires can't burn the whole patch, as this causes /0 errors.
@@ -971,23 +971,61 @@ subroutine spawn_patches( currentSite, bc_in )
971971 ! due to fire, as well as from each fire mortality term
972972 currentSite% fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) = &
973973 currentSite% fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) + &
974- nc% n * currentCohort% fire_mort / hlm_freq_day
974+ nc% n * currentCohort% fire_mort / hlm_freq_day ! total
975+
976+ currentSite% rx_fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) = &
977+ currentSite% rx_fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) + &
978+ nc% n * currentCohort% rx_fire_mort / hlm_freq_day ! for prescribed fire
979+
980+ currentSite% nonrx_fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) = &
981+ currentSite% nonrx_fmort_rate_canopy(currentCohort% size_class, currentCohort% pft) + &
982+ nc% n * currentCohort% nonrx_fire_mort / hlm_freq_day ! for wildfire fire
975983
976984 currentSite% fmort_carbonflux_canopy(currentCohort% pft) = &
977985 currentSite% fmort_carbonflux_canopy(currentCohort% pft) + &
978986 (nc% n * currentCohort% fire_mort) * &
979987 total_c * g_per_kg * days_per_sec * ha_per_m2
980988
989+ currentSite% rx_fmort_carbonflux_canopy(currentCohort% pft) = &
990+ currentSite% rx_fmort_carbonflux_canopy(currentCohort% pft) + &
991+ (nc% n * currentCohort% rx_fire_mort) * &
992+ total_c * g_per_kg * days_per_sec * ha_per_m2
993+
994+ currentSite% nonrx_fmort_carbonflux_canopy(currentCohort% pft) = &
995+ currentSite% nonrx_fmort_carbonflux_canopy(currentCohort% pft) + &
996+ (nc% n * currentCohort% nonrx_fire_mort) * &
997+ total_c * g_per_kg * days_per_sec * ha_per_m2
998+
981999 else
9821000 ! understory
9831001 currentSite% fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) = &
9841002 currentSite% fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) + &
9851003 nc% n * currentCohort% fire_mort / hlm_freq_day
1004+
1005+ currentSite% rx_fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) = &
1006+ currentSite% rx_fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) + &
1007+ nc% n * currentCohort% rx_fire_mort / hlm_freq_day
1008+
1009+ currentSite% nonrx_fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) = &
1010+ currentSite% nonrx_fmort_rate_ustory(currentCohort% size_class, currentCohort% pft) + &
1011+ nc% n * currentCohort% nonrx_fire_mort / hlm_freq_day
9861012
9871013 currentSite% fmort_carbonflux_ustory(currentCohort% pft) = &
9881014 currentSite% fmort_carbonflux_ustory(currentCohort% pft) + &
9891015 (nc% n * currentCohort% fire_mort) * &
9901016 total_c * g_per_kg * days_per_sec * ha_per_m2
1017+
1018+ currentSite% rx_fmort_carbonflux_ustory(currentCohort% pft) = &
1019+ currentSite% rx_fmort_carbonflux_ustory(currentCohort% pft) + &
1020+ (nc% n * currentCohort% rx_fire_mort) * &
1021+ total_c * g_per_kg * days_per_sec * ha_per_m2
1022+
1023+ currentSite% nonrx_fmort_carbonflux_ustory(currentCohort% pft) = &
1024+ currentSite% nonrx_fmort_carbonflux_ustory(currentCohort% pft) + &
1025+ (nc% n * currentCohort% nonrx_fire_mort) * &
1026+ total_c * g_per_kg * days_per_sec * ha_per_m2
1027+
1028+
9911029 end if
9921030
9931031 currentSite% fmort_abg_flux(currentCohort% size_class, currentCohort% pft) = &
@@ -996,6 +1034,19 @@ subroutine spawn_patches( currentSite, bc_in )
9961034 ( (sapw_c + struct_c + store_c) * prt_params% allom_agb_frac(currentCohort% pft) + &
9971035 leaf_c ) * &
9981036 g_per_kg * days_per_sec * ha_per_m2
1037+
1038+ currentSite% rx_fmort_abg_flux(currentCohort% size_class, currentCohort% pft) = &
1039+ currentSite% rx_fmort_abg_flux(currentCohort% size_class, currentCohort% pft) + &
1040+ (nc% n * currentCohort% rx_fire_mort) * &
1041+ ( (sapw_c + struct_c + store_c) * prt_params% allom_agb_frac(currentCohort% pft) + &
1042+ leaf_c ) * &
1043+ g_per_kg * days_per_sec * ha_per_m2
1044+
1045+ currentSite% nonrx_fmort_abg_flux(currentCohort% size_class, currentCohort% pft) = &
1046+ currentSite% nonrx_fmort_abg_flux(currentCohort% size_class, currentCohort% pft) + &
1047+ (nc% n * currentCohort% nonrx_fire_mort) * &
1048+ ((sapw_c + struct_c + store_c) * prt_params% allom_agb_frac(currentCohort% pft) + &
1049+ leaf_c) * g_per_kg * days_per_sec * ha_per_m2
9991050
10001051
10011052 currentSite% fmort_rate_cambial(currentCohort% size_class, currentCohort% pft) = &
@@ -1005,6 +1056,20 @@ subroutine spawn_patches( currentSite, bc_in )
10051056 currentSite% fmort_rate_crown(currentCohort% size_class, currentCohort% pft) + &
10061057 nc% n * currentCohort% crownfire_mort / hlm_freq_day
10071058
1059+ currentSite% rx_fmort_rate_cambial(currentCohort% size_class, currentCohort% pft) = &
1060+ currentSite% rx_fmort_rate_cambial(currentCohort% size_class, currentCohort% pft) + &
1061+ nc% n * currentCohort% rx_cambial_mort / hlm_freq_day
1062+ currentSite% rx_fmort_rate_crown(currentCohort% size_class, currentCohort% pft) = &
1063+ currentSite% rx_fmort_rate_crown(currentCohort% size_class, currentCohort% pft) + &
1064+ nc% n * currentCohort% rx_crown_mort / hlm_freq_day
1065+
1066+ currentSite% nonrx_fmort_rate_cambial(currentCohort% size_class, currentCohort% pft) = &
1067+ currentSite% nonrx_fmort_rate_cambial(currentCohort% size_class, currentCohort% pft) + &
1068+ nc% n * currentCohort% nonrx_cambial_mort / hlm_freq_day
1069+ currentSite% nonrx_fmort_rate_crown(currentCohort% size_class, currentCohort% pft) = &
1070+ currentSite% nonrx_fmort_rate_crown(currentCohort% size_class, currentCohort% pft) + &
1071+ nc% n * currentCohort% nonrx_crown_mort / hlm_freq_day
1072+
10081073 ! loss of individual from fire in new patch.
10091074 nc% n = nc% n * (1.0_r8 - currentCohort% fire_mort)
10101075
@@ -1038,12 +1103,18 @@ subroutine spawn_patches( currentSite, bc_in )
10381103
10391104 if ( (leaf_burn_frac < 0._r8 ) .or. &
10401105 (leaf_burn_frac > 1._r8 ) .or. &
1041- (currentCohort% fire_mort < 0._r8 ) .or. &
1042- (currentCohort% fire_mort > 1._r8 )) then
1106+ (currentCohort% fire_mort < 0._r8 ) .or. &
1107+ (currentCohort% fire_mort > 1._r8 ) .or. &
1108+ (currentCohort% rx_fire_mort < 0._r8 ) .or. &
1109+ (currentCohort% rx_fire_mort > 1._r8 ) .or. &
1110+ (currentCohort% nonrx_fire_mort < 0._r8 ) .or. &
1111+ (currentCohort% nonrx_fire_mort > 1._r8 ) ) then
10431112 write (fates_log(),* ) ' unexpected fire fractions'
10441113 write (fates_log(),* ) prt_params% woody(currentCohort% pft)
10451114 write (fates_log(),* ) leaf_burn_frac
10461115 write (fates_log(),* ) currentCohort% fire_mort
1116+ write (fates_log(),* ) currentCohort% rx_fire_mort
1117+ write (fates_log(),* ) currentCohort% nonrx_fire_mort
10471118 call endrun(msg= errMsg(sourcefile, __LINE__))
10481119 end if
10491120
@@ -2208,8 +2279,8 @@ subroutine fire_litter_fluxes(currentSite, currentPatch, &
22082279
22092280
22102281 ! Absolute number of dead trees being transfered in with the donated area
2211- num_dead_trees = (currentCohort% fire_mort* currentCohort % n * &
2212- patch_site_areadis/ currentPatch% area)
2282+ num_dead_trees = (currentCohort% fire_mort * &
2283+ currentCohort % n * patch_site_areadis/ currentPatch% area)
22132284
22142285 ! Contribution of dead trees to leaf litter
22152286 donatable_mass = num_dead_trees * (leaf_m+ repro_m) * &
@@ -3185,10 +3256,14 @@ subroutine fuse_2_patches(csite, dp, rp)
31853256 rp% tau_l = (dp% tau_l* dp% area + rp% tau_l* rp% area) * inv_sum_area
31863257 rp% tfc_ros = (dp% tfc_ros* dp% area + rp% tfc_ros* rp% area) * inv_sum_area
31873258 rp% fi = (dp% fi* dp% area + rp% fi* rp% area) * inv_sum_area
3259+ rp% nonrx_fi = (dp% nonrx_fi* dp% area + rp% nonrx_fi* rp% area) * inv_sum_area
3260+ rp% rx_fi = (dp% rx_fi* dp% area + rp% rx_fi* rp% area) * inv_sum_area
31883261 rp% fd = (dp% fd* dp% area + rp% fd* rp% area) * inv_sum_area
31893262 rp% ros_back = (dp% ros_back* dp% area + rp% ros_back* rp% area) * inv_sum_area
31903263 rp% scorch_ht(:) = (dp% scorch_ht(:)* dp% area + rp% scorch_ht(:)* rp% area) * inv_sum_area
31913264 rp% frac_burnt = (dp% frac_burnt* dp% area + rp% frac_burnt* rp% area) * inv_sum_area
3265+ rp% rx_frac_burnt = (dp% rx_frac_burnt* dp% area + rp% rx_frac_burnt* rp% area) * inv_sum_area
3266+ rp% nonrx_frac_burnt = (dp% nonrx_frac_burnt* dp% area + rp% nonrx_frac_burnt* rp% area) * inv_sum_area
31923267 rp% btran_ft(:) = (dp% btran_ft(:)* dp% area + rp% btran_ft(:)* rp% area) * inv_sum_area
31933268 rp% zstar = (dp% zstar* dp% area + rp% zstar* rp% area) * inv_sum_area
31943269 rp% c_stomata = (dp% c_stomata* dp% area + rp% c_stomata* rp% area) * inv_sum_area
0 commit comments