pl_burnop.f90 Source File


This file depends on

sourcefile~~pl_burnop.f90~~EfferentGraph sourcefile~pl_burnop.f90 pl_burnop.f90 sourcefile~basin_module.f90 basin_module.f90 sourcefile~pl_burnop.f90->sourcefile~basin_module.f90 sourcefile~carbon_module.f90 carbon_module.f90 sourcefile~pl_burnop.f90->sourcefile~carbon_module.f90 sourcefile~hru_module.f90 hru_module.f90 sourcefile~pl_burnop.f90->sourcefile~hru_module.f90 sourcefile~mgt_operations_module.f90 mgt_operations_module.f90 sourcefile~pl_burnop.f90->sourcefile~mgt_operations_module.f90 sourcefile~organic_mineral_mass_module.f90 organic_mineral_mass_module.f90 sourcefile~pl_burnop.f90->sourcefile~organic_mineral_mass_module.f90 sourcefile~plant_module.f90 plant_module.f90 sourcefile~pl_burnop.f90->sourcefile~plant_module.f90 sourcefile~soil_module.f90 soil_module.f90 sourcefile~pl_burnop.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_burnop (jj, iburn)
      
!!    ~ ~ ~ PURPOSE ~ ~ ~
!!    this subroutine performs all management operations             

!!    ~ ~ ~ INCOMING VARIABLES ~ ~ ~
!!    name        |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!    ibrn        |none          |counter in readmgt 
!!    phub        |              |heat units to schedule burning
!!    ~ ~ ~ ~ ~ ~ END SPECIFICATIONS ~ ~ ~ ~ ~ ~

      use basin_module
      use mgt_operations_module
      use organic_mineral_mass_module
      use hru_module, only : cn2, ipl
      use soil_module
      use plant_module
      use carbon_module
      
      implicit none      
   
      integer :: j = 0                       !none          |counter
      integer, intent (in) :: jj             !none          |counter  
      integer, intent (in) :: iburn          !julian date   |date of burning
      real :: cnop = 0.                      !              |updated cn after fire
      real :: fr_burn = 0.                   !              |fraction burned
      real :: pburn = 0.                     !              |amount of phosphorus that burns - removed from plant
                                             !              |phosphorus and added to soil organic phosphorus 

      j = jj

      !!update curve number
      cnop = cn2(j) + fire_db(iburn)%cn2_upd
      call curno(cnop,j)
      
      !! zero total community masses
      pl_mass(j)%tot_com = plt_mass_z
      pl_mass(j)%ab_gr_com = plt_mass_z
      pl_mass(j)%leaf_com = plt_mass_z
      pl_mass(j)%stem_com = plt_mass_z
      pl_mass(j)%seed_com = plt_mass_z
      
      !!burn biomass and residue for each plant
      do ipl = 1, pcom(j)%npl
        
        !! burn all above ground plant components
        pl_burn = fire_db(iburn)%fr_burn * pl_mass(j)%ab_gr(ipl)
        pl_mass(j)%ab_gr(ipl) = (1. - fire_db(iburn)%fr_burn) * pl_mass(j)%ab_gr(ipl)
        pl_mass(j)%stem(ipl) = (1. - fire_db(iburn)%fr_burn) * pl_mass(j)%stem(ipl)
        pl_mass(j)%leaf(ipl) = (1. - fire_db(iburn)%fr_burn) * pl_mass(j)%leaf(ipl)
        pl_mass(j)%seed(ipl) = (1. - fire_db(iburn)%fr_burn) * pl_mass(j)%seed(ipl)
        !! carbon in co2 emitted during burning
        hrc_d(j)%emit_c = hrc_d(j)%emit_c + pl_burn%c
        hpc_d(j)%emit_c = hpc_d(j)%emit_c + pl_burn%c
        
        !! burn all surface (layer 1) residue and humus components
        if (bsn_cc%cswat == 1) then
          !! const carbon (bsn_cc%cswat == 1)
          pl_burn = fire_db(iburn)%fr_burn * (soil1(j)%hact(1) + soil1(j)%hsta(1))
          soil1(j)%rsd(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%rsd(1)
          soil1(j)%hact(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%hact(1)
          soil1(j)%hsta(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%hsta(1)
          !! add plant p burn to stable humus pool for constant carbon
          soil1(j)%hsta(1)%p = soil1(j)%hsta(1)%p + pl_burn%p
        else
          !! dynamic carbon (bsn_cc%cswat == 2)
          pl_burn = fire_db(iburn)%fr_burn * (soil1(j)%hs(1) + soil1(j)%hp(1) + soil1(j)%rsd(ipl))
          soil1(j)%rsd(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%rsd(1)
          soil1(j)%hs(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%hs(1)
          soil1(j)%hp(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%hp(1)
          soil1(j)%meta(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%meta(1)
          soil1(j)%str(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%str(1)
          soil1(j)%lig(1) = (1. - fire_db(iburn)%fr_burn) * soil1(j)%lig(1)
          !! add plant p burn to stable humus pool for constant carbon
          soil1(j)%hp(1)%p = soil1(j)%hp(1)%p + pl_burn%p
        end if
       
        !! sum total community masses
        pl_mass(j)%tot_com = pl_mass(j)%tot_com + pl_mass(j)%tot(ipl)
        pl_mass(j)%ab_gr_com = pl_mass(j)%ab_gr_com + pl_mass(j)%ab_gr(ipl)
        pl_mass(j)%leaf_com = pl_mass(j)%leaf_com + pl_mass(j)%leaf(ipl)
        pl_mass(j)%stem_com = pl_mass(j)%stem_com + pl_mass(j)%stem(ipl)
        pl_mass(j)%seed_com = pl_mass(j)%seed_com + pl_mass(j)%seed(ipl)
        
       
      end do     ! npl loop

      return
      end subroutine pl_burnop