pl_mortality.f90 Source File


This file depends on

sourcefile~~pl_mortality.f90~~EfferentGraph sourcefile~pl_mortality.f90 pl_mortality.f90 sourcefile~basin_module.f90 basin_module.f90 sourcefile~pl_mortality.f90->sourcefile~basin_module.f90 sourcefile~carbon_module.f90 carbon_module.f90 sourcefile~pl_mortality.f90->sourcefile~carbon_module.f90 sourcefile~hru_module.f90 hru_module.f90 sourcefile~pl_mortality.f90->sourcefile~hru_module.f90 sourcefile~organic_mineral_mass_module.f90 organic_mineral_mass_module.f90 sourcefile~pl_mortality.f90->sourcefile~organic_mineral_mass_module.f90 sourcefile~plant_data_module.f90 plant_data_module.f90 sourcefile~pl_mortality.f90->sourcefile~plant_data_module.f90 sourcefile~plant_module.f90 plant_module.f90 sourcefile~pl_mortality.f90->sourcefile~plant_module.f90 sourcefile~soil_module.f90 soil_module.f90 sourcefile~pl_mortality.f90->sourcefile~soil_module.f90 sourcefile~organic_mineral_mass_module.f90->sourcefile~carbon_module.f90 sourcefile~soil_module.f90->sourcefile~carbon_module.f90

Source Code

      subroutine pl_mortality
      
      use plant_data_module
      use basin_module
      use hru_module, only : ihru, ipl
      use plant_module
      use carbon_module
      use organic_mineral_mass_module
      use soil_module
      
      implicit none 
      
      integer :: j = 0          !none               |HRU number
      integer :: idp = 0        !                   |
      integer :: ly = 0         !                   |soil layer number
      real :: bm_dieoff = 0.
      real :: rto = 0.
      real :: rto1 = 0.
               
      j = ihru
      idp = pcom(j)%plcur(ipl)%idplt

      !keep biomass below maximum - excess to residue (need to include c, n and p adjustments)
      bm_dieoff = (1. + pldb(idp)%bm_dieoff) * (pl_mass(j)%ab_gr(ipl)%m - (pldb(idp)%bmx_peren * 1000.))  !t/ha -> kg/ha
      if (bm_dieoff > 1.e-6 .and. pl_mass(j)%ab_gr(ipl)%m > bm_dieoff) then

        !! partition all plant components by above ground ratio

        rto = bm_dieoff / pl_mass(j)%ab_gr(ipl)%m  ! Fraction of dead biomass

        rto = amin1 (1., rto)

        !! add dead material to residue
        rto1 = 1. - rto  ! Fraction remaining of living biomass
        rto1 = max (0., rto1)
        
        !! add above ground biomass that has died off to surface residue pools
        pl_mass(j)%rsd(ipl) = pl_mass(j)%rsd(ipl) + rto * pl_mass(j)%ab_gr(ipl)
        pl_mass(j)%rsd_tot = pl_mass(j)%rsd_tot + rto * pl_mass(j)%ab_gr(ipl)
        
        !! add dead roots to soil residue pools
        do ly = 1, soil(j)%nly
          soil1(j)%pl(ipl)%rsd(ly) = soil1(j)%pl(ipl)%rsd(ly) + rto * soil(j)%ly(ly)%rtfr &
                                                                    * pl_mass(j)%root(ipl)
        end do

        ! Reduce remaining living biomass  
        pl_mass(j)%tot(ipl) = rto1 * pl_mass(j)%tot(ipl)
        pl_mass(j)%ab_gr(ipl) = rto1 * pl_mass(j)%ab_gr(ipl)
        pl_mass(j)%leaf(ipl) = rto1 * pl_mass(j)%leaf(ipl)
        pl_mass(j)%stem(ipl) = rto1 * pl_mass(j)%stem(ipl)
        pl_mass(j)%seed(ipl) = rto1 * pl_mass(j)%seed(ipl)
        pl_mass(j)%root(ipl) = rto1 * pl_mass(j)%root(ipl)
        
      end if

      return
      end subroutine pl_mortality