@@ -767,13 +767,9 @@ subroutine spawn_patches( currentSite, bc_in)
767767 ! and burned litter to atmosphere. Thus it is important to zero fuel%frac_burnt when
768768 ! fire is not the current disturbance regime.
769769
770- if (i_disturbance_type .ne. dtype_ifire) then
771- currentPatch% fuel% frac_burnt(:) = 0._r8
772- end if
773-
774770 call CopyPatchMeansTimers(currentPatch, newPatch)
775771
776- call TransLitterNewPatch( currentSite, currentPatch, newPatch, patch_site_areadis)
772+ call TransLitterNewPatch( currentSite, currentPatch, newPatch, patch_site_areadis, i_disturbance_type )
777773
778774 ! Transfer in litter fluxes from plants in various contexts of death and destruction
779775 select case (i_disturbance_type)
@@ -1045,7 +1041,6 @@ subroutine spawn_patches( currentSite, bc_in)
10451041 ! Some of of the leaf mass from living plants has been
10461042 ! burned off. Here, we remove that mass, and
10471043 ! tally it in the flux we sent to the atmosphere
1048-
10491044 if (prt_params% woody(currentCohort% pft) == itrue)then
10501045 leaf_burn_frac = currentCohort% fraction_crown_burned
10511046 else
@@ -1724,9 +1719,7 @@ subroutine split_patch(currentSite, currentPatch, new_patch, fraction_to_keep, a
17241719
17251720 call CopyPatchMeansTimers(currentPatch, new_patch)
17261721
1727- call TransLitterNewPatch( currentSite, currentPatch, new_patch, temp_area)
1728-
1729- currentPatch% fuel% frac_burnt(:) = 0._r8
1722+ call TransLitterNewPatch( currentSite, currentPatch, new_patch, temp_area, 0 )
17301723
17311724 ! Next, we loop through the cohorts in the donor patch, copy them with
17321725 ! area modified number density into the new-patch, and apply survivorship.
@@ -1922,7 +1915,8 @@ end subroutine set_patchno
19221915 subroutine TransLitterNewPatch (currentSite , &
19231916 currentPatch , &
19241917 newPatch , &
1925- patch_site_areadis )
1918+ patch_site_areadis , &
1919+ dist_type )
19261920
19271921 ! -----------------------------------------------------------------------------------
19281922 !
@@ -1971,6 +1965,7 @@ subroutine TransLitterNewPatch(currentSite, &
19711965 type (fates_patch_type) , intent (inout ) :: newPatch ! New patch
19721966 real (r8 ) , intent (in ) :: patch_site_areadis ! Area being donated
19731967 ! by current patch
1968+ integer , intent (in ) :: dist_type ! disturbance type
19741969
19751970
19761971 ! locals
@@ -1993,6 +1988,7 @@ subroutine TransLitterNewPatch(currentSite, &
19931988 real (r8 ) :: litter_stock0,litter_stock1
19941989 real (r8 ) :: burn_flux0,burn_flux1
19951990 real (r8 ) :: error
1991+ real (r8 ) :: frac_burnt ! fraction burnt of current fuel type [0-1]
19961992
19971993 do el = 1 ,num_elements
19981994
@@ -2076,15 +2072,19 @@ subroutine TransLitterNewPatch(currentSite, &
20762072 litter_stock0 = curr_litt% GetTotalLitterMass()* currentPatch% area + &
20772073 new_litt% GetTotalLitterMass()* newPatch% area
20782074 end if
2079-
2075+
20802076 do c = 1 ,ncwd
2077+ frac_burnt = 0.0_r8
2078+ if (dist_type == dtype_ifire .and. currentPatch% fire == 1 ) then
2079+ frac_burnt = currentPatch% fuel% frac_burnt(c)
2080+ end if
20812081
20822082 ! Transfer above ground CWD
20832083 donatable_mass = curr_litt% ag_cwd(c) * patch_site_areadis * &
2084- (1._r8 - currentPatch % fuel % frac_burnt(c) )
2084+ (1._r8 - frac_burnt)
20852085
20862086 burned_mass = curr_litt% ag_cwd(c) * patch_site_areadis * &
2087- currentPatch % fuel % frac_burnt(c)
2087+ frac_burnt
20882088
20892089 new_litt% ag_cwd(c) = new_litt% ag_cwd(c) + donatable_mass* donate_m2
20902090 curr_litt% ag_cwd(c) = curr_litt% ag_cwd(c) + donatable_mass* retain_m2
@@ -2100,15 +2100,20 @@ subroutine TransLitterNewPatch(currentSite, &
21002100 end do
21012101
21022102 enddo
2103-
2103+
2104+ frac_burnt = 0.0_r8
2105+ if (dist_type == dtype_ifire .and. currentPatch% fire == 1 ) then
2106+ frac_burnt = currentPatch% fuel% frac_burnt(fuel_classes% dead_leaves())
2107+ end if
2108+
21042109 do dcmpy= 1 ,ndcmpy
21052110
21062111 ! Transfer leaf fines
21072112 donatable_mass = curr_litt% leaf_fines(dcmpy) * patch_site_areadis * &
2108- (1._r8 - currentPatch % fuel % frac_burnt(fuel_classes % dead_leaves()) )
2113+ (1._r8 - frac_burnt)
21092114
21102115 burned_mass = curr_litt% leaf_fines(dcmpy) * patch_site_areadis * &
2111- currentPatch % fuel % frac_burnt(fuel_classes % dead_leaves())
2116+ frac_burnt
21122117
21132118 new_litt% leaf_fines(dcmpy) = new_litt% leaf_fines(dcmpy) + donatable_mass* donate_m2
21142119 curr_litt% leaf_fines(dcmpy) = curr_litt% leaf_fines(dcmpy) + donatable_mass* retain_m2
0 commit comments