plant_module.f90 Source File


Files dependent on this one

sourcefile~~plant_module.f90~~AfferentGraph sourcefile~plant_module.f90 plant_module.f90 sourcefile~actions.f90 actions.f90 sourcefile~actions.f90->sourcefile~plant_module.f90 sourcefile~albedo.f90 albedo.f90 sourcefile~albedo.f90->sourcefile~plant_module.f90 sourcefile~aqu_pesticide_output.f90 aqu_pesticide_output.f90 sourcefile~aqu_pesticide_output.f90->sourcefile~plant_module.f90 sourcefile~basin_aqu_pest_output.f90 basin_aqu_pest_output.f90 sourcefile~basin_aqu_pest_output.f90->sourcefile~plant_module.f90 sourcefile~basin_ch_pest_output.f90 basin_ch_pest_output.f90 sourcefile~basin_ch_pest_output.f90->sourcefile~plant_module.f90 sourcefile~basin_ls_pest_output.f90 basin_ls_pest_output.f90 sourcefile~basin_ls_pest_output.f90->sourcefile~plant_module.f90 sourcefile~basin_res_pest_output.f90 basin_res_pest_output.f90 sourcefile~basin_res_pest_output.f90->sourcefile~plant_module.f90 sourcefile~cal_allo_init.f90 cal_allo_init.f90 sourcefile~cal_allo_init.f90->sourcefile~plant_module.f90 sourcefile~cal_conditions.f90 cal_conditions.f90 sourcefile~cal_conditions.f90->sourcefile~plant_module.f90 sourcefile~cal_parm_select.f90 cal_parm_select.f90 sourcefile~cal_parm_select.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd.f90 calsoft_hyd.f90 sourcefile~calsoft_hyd.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd_bfr.f90 calsoft_hyd_bfr.f90 sourcefile~calsoft_hyd_bfr.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd_bfr_et.f90 calsoft_hyd_bfr_et.f90 sourcefile~calsoft_hyd_bfr_et.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd_bfr_latq.f90 calsoft_hyd_bfr_latq.f90 sourcefile~calsoft_hyd_bfr_latq.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd_bfr_perc.f90 calsoft_hyd_bfr_perc.f90 sourcefile~calsoft_hyd_bfr_perc.f90->sourcefile~plant_module.f90 sourcefile~calsoft_hyd_bfr_surq.f90 calsoft_hyd_bfr_surq.f90 sourcefile~calsoft_hyd_bfr_surq.f90->sourcefile~plant_module.f90 sourcefile~calsoft_plant.f90 calsoft_plant.f90 sourcefile~calsoft_plant.f90->sourcefile~plant_module.f90 sourcefile~calsoft_read_codes.f90 calsoft_read_codes.f90 sourcefile~calsoft_read_codes.f90->sourcefile~plant_module.f90 sourcefile~calsoft_sed.f90 calsoft_sed.f90 sourcefile~calsoft_sed.f90->sourcefile~plant_module.f90 sourcefile~ch_cs_output.f90 ch_cs_output.f90 sourcefile~ch_cs_output.f90->sourcefile~plant_module.f90 sourcefile~ch_pathogen_output.f90 ch_pathogen_output.f90 sourcefile~ch_pathogen_output.f90->sourcefile~plant_module.f90 sourcefile~ch_salt_output.f90 ch_salt_output.f90 sourcefile~ch_salt_output.f90->sourcefile~plant_module.f90 sourcefile~cha_pesticide_output.f90 cha_pesticide_output.f90 sourcefile~cha_pesticide_output.f90->sourcefile~plant_module.f90 sourcefile~conditions.f90 conditions.f90 sourcefile~conditions.f90->sourcefile~plant_module.f90 sourcefile~cs_hru_init.f90 cs_hru_init.f90 sourcefile~cs_hru_init.f90->sourcefile~plant_module.f90 sourcefile~cs_uptake.f90 cs_uptake.f90 sourcefile~cs_uptake.f90->sourcefile~plant_module.f90 sourcefile~ero_ovrsed.f90 ero_ovrsed.f90 sourcefile~ero_ovrsed.f90->sourcefile~plant_module.f90 sourcefile~et_act.f90 et_act.f90 sourcefile~et_act.f90->sourcefile~plant_module.f90 sourcefile~et_pot.f90 et_pot.f90 sourcefile~et_pot.f90->sourcefile~plant_module.f90 sourcefile~hru_allo.f90 hru_allo.f90 sourcefile~hru_allo.f90->sourcefile~plant_module.f90 sourcefile~hru_carbon_output.f90 hru_carbon_output.f90 sourcefile~hru_carbon_output.f90->sourcefile~plant_module.f90 sourcefile~hru_control.f90 hru_control.f90 sourcefile~hru_control.f90->sourcefile~plant_module.f90 sourcefile~hru_dtbl_actions_init.f90 hru_dtbl_actions_init.f90 sourcefile~hru_dtbl_actions_init.f90->sourcefile~plant_module.f90 sourcefile~hru_lum_init.f90 hru_lum_init.f90 sourcefile~hru_lum_init.f90->sourcefile~plant_module.f90 sourcefile~hru_output.f90 hru_output.f90 sourcefile~hru_output.f90->sourcefile~plant_module.f90 sourcefile~hru_pathogen_output.f90 hru_pathogen_output.f90 sourcefile~hru_pathogen_output.f90->sourcefile~plant_module.f90 sourcefile~hru_pesticide_output.f90 hru_pesticide_output.f90 sourcefile~hru_pesticide_output.f90->sourcefile~plant_module.f90 sourcefile~hru_urbanhr.f90 hru_urbanhr.f90 sourcefile~hru_urbanhr.f90->sourcefile~plant_module.f90 sourcefile~hydro_init.f90 hydro_init.f90 sourcefile~hydro_init.f90->sourcefile~plant_module.f90 sourcefile~lsreg_output.f90 lsreg_output.f90 sourcefile~lsreg_output.f90->sourcefile~plant_module.f90 sourcefile~mallo_control.f90 mallo_control.f90 sourcefile~mallo_control.f90->sourcefile~plant_module.f90 sourcefile~mgt_harvbiomass.f90 mgt_harvbiomass.f90 sourcefile~mgt_harvbiomass.f90->sourcefile~plant_module.f90 sourcefile~mgt_harvgrain.f90 mgt_harvgrain.f90 sourcefile~mgt_harvgrain.f90->sourcefile~plant_module.f90 sourcefile~mgt_harvresidue.f90 mgt_harvresidue.f90 sourcefile~mgt_harvresidue.f90->sourcefile~plant_module.f90 sourcefile~mgt_harvtuber.f90 mgt_harvtuber.f90 sourcefile~mgt_harvtuber.f90->sourcefile~plant_module.f90 sourcefile~mgt_killop.f90 mgt_killop.f90 sourcefile~mgt_killop.f90->sourcefile~plant_module.f90 sourcefile~mgt_newtillmix.f90 mgt_newtillmix.f90 sourcefile~mgt_newtillmix.f90->sourcefile~plant_module.f90 sourcefile~mgt_newtillmix_wet.f90 mgt_newtillmix_wet.f90 sourcefile~mgt_newtillmix_wet.f90->sourcefile~plant_module.f90 sourcefile~mgt_operatn.f90 mgt_operatn.f90 sourcefile~mgt_operatn.f90->sourcefile~plant_module.f90 sourcefile~mgt_plantop.f90 mgt_plantop.f90 sourcefile~mgt_plantop.f90->sourcefile~plant_module.f90 sourcefile~mgt_sched.f90 mgt_sched.f90 sourcefile~mgt_sched.f90->sourcefile~plant_module.f90 sourcefile~mgt_transplant.f90 mgt_transplant.f90 sourcefile~mgt_transplant.f90->sourcefile~plant_module.f90 sourcefile~nut_nminrl.f90 nut_nminrl.f90 sourcefile~nut_nminrl.f90->sourcefile~plant_module.f90 sourcefile~nut_orgn.f90 nut_orgn.f90 sourcefile~nut_orgn.f90->sourcefile~plant_module.f90 sourcefile~nut_psed.f90 nut_psed.f90 sourcefile~nut_psed.f90->sourcefile~plant_module.f90 sourcefile~obj_output.f90 obj_output.f90 sourcefile~obj_output.f90->sourcefile~plant_module.f90 sourcefile~path_apply.f90 path_apply.f90 sourcefile~path_apply.f90->sourcefile~plant_module.f90 sourcefile~path_ls_process.f90 path_ls_process.f90 sourcefile~path_ls_process.f90->sourcefile~plant_module.f90 sourcefile~pathogen_init.f90 pathogen_init.f90 sourcefile~pathogen_init.f90->sourcefile~plant_module.f90 sourcefile~pest_apply.f90 pest_apply.f90 sourcefile~pest_apply.f90->sourcefile~plant_module.f90 sourcefile~pest_decay.f90 pest_decay.f90 sourcefile~pest_decay.f90->sourcefile~plant_module.f90 sourcefile~pest_pl_up.f90 pest_pl_up.f90 sourcefile~pest_pl_up.f90->sourcefile~plant_module.f90 sourcefile~pest_soil_tot.f90 pest_soil_tot.f90 sourcefile~pest_soil_tot.f90->sourcefile~plant_module.f90 sourcefile~pest_washp.f90 pest_washp.f90 sourcefile~pest_washp.f90->sourcefile~plant_module.f90 sourcefile~pesticide_init.f90 pesticide_init.f90 sourcefile~pesticide_init.f90->sourcefile~plant_module.f90 sourcefile~pl_biomass_gro.f90 pl_biomass_gro.f90 sourcefile~pl_biomass_gro.f90->sourcefile~plant_module.f90 sourcefile~pl_burnop.f90 pl_burnop.f90 sourcefile~pl_burnop.f90->sourcefile~plant_module.f90 sourcefile~pl_community.f90 pl_community.f90 sourcefile~pl_community.f90->sourcefile~plant_module.f90 sourcefile~pl_dormant.f90 pl_dormant.f90 sourcefile~pl_dormant.f90->sourcefile~plant_module.f90 sourcefile~pl_graze.f90 pl_graze.f90 sourcefile~pl_graze.f90->sourcefile~plant_module.f90 sourcefile~pl_grow.f90 pl_grow.f90 sourcefile~pl_grow.f90->sourcefile~plant_module.f90 sourcefile~pl_leaf_drop.f90 pl_leaf_drop.f90 sourcefile~pl_leaf_drop.f90->sourcefile~plant_module.f90 sourcefile~pl_leaf_gro.f90 pl_leaf_gro.f90 sourcefile~pl_leaf_gro.f90->sourcefile~plant_module.f90 sourcefile~pl_leaf_senes.f90 pl_leaf_senes.f90 sourcefile~pl_leaf_senes.f90->sourcefile~plant_module.f90 sourcefile~pl_mortality.f90 pl_mortality.f90 sourcefile~pl_mortality.f90->sourcefile~plant_module.f90 sourcefile~pl_nfix.f90 pl_nfix.f90 sourcefile~pl_nfix.f90->sourcefile~plant_module.f90 sourcefile~pl_nup.f90 pl_nup.f90 sourcefile~pl_nup.f90->sourcefile~plant_module.f90 sourcefile~pl_nupd.f90 pl_nupd.f90 sourcefile~pl_nupd.f90->sourcefile~plant_module.f90 sourcefile~pl_nut_demand.f90 pl_nut_demand.f90 sourcefile~pl_nut_demand.f90->sourcefile~plant_module.f90 sourcefile~pl_partition.f90 pl_partition.f90 sourcefile~pl_partition.f90->sourcefile~plant_module.f90 sourcefile~pl_pup.f90 pl_pup.f90 sourcefile~pl_pup.f90->sourcefile~plant_module.f90 sourcefile~pl_pupd.f90 pl_pupd.f90 sourcefile~pl_pupd.f90->sourcefile~plant_module.f90 sourcefile~pl_read_parms_cal.f90 pl_read_parms_cal.f90 sourcefile~pl_read_parms_cal.f90->sourcefile~plant_module.f90 sourcefile~pl_root_gro.f90 pl_root_gro.f90 sourcefile~pl_root_gro.f90->sourcefile~plant_module.f90 sourcefile~pl_rootfr.f90 pl_rootfr.f90 sourcefile~pl_rootfr.f90->sourcefile~plant_module.f90 sourcefile~pl_tstr.f90 pl_tstr.f90 sourcefile~pl_tstr.f90->sourcefile~plant_module.f90 sourcefile~pl_waterup.f90 pl_waterup.f90 sourcefile~pl_waterup.f90->sourcefile~plant_module.f90 sourcefile~pl_write_parms_cal.f90 pl_write_parms_cal.f90 sourcefile~pl_write_parms_cal.f90->sourcefile~plant_module.f90 sourcefile~plant_all_init.f90 plant_all_init.f90 sourcefile~plant_all_init.f90->sourcefile~plant_module.f90 sourcefile~plant_init.f90 plant_init.f90 sourcefile~plant_init.f90->sourcefile~plant_module.f90 sourcefile~re_initialize.f90 re_initialize.f90 sourcefile~re_initialize.f90->sourcefile~plant_module.f90 sourcefile~res_cs_output.f90 res_cs_output.f90 sourcefile~res_cs_output.f90->sourcefile~plant_module.f90 sourcefile~res_pesticide_output.f90 res_pesticide_output.f90 sourcefile~res_pesticide_output.f90->sourcefile~plant_module.f90 sourcefile~res_salt_output.f90 res_salt_output.f90 sourcefile~res_salt_output.f90->sourcefile~plant_module.f90 sourcefile~salt_hru_init.f90 salt_hru_init.f90 sourcefile~salt_hru_init.f90->sourcefile~plant_module.f90 sourcefile~salt_uptake.f90 salt_uptake.f90 sourcefile~salt_uptake.f90->sourcefile~plant_module.f90 sourcefile~soils_init.f90 soils_init.f90 sourcefile~soils_init.f90->sourcefile~plant_module.f90 sourcefile~sq_canopyint.f90 sq_canopyint.f90 sourcefile~sq_canopyint.f90->sourcefile~plant_module.f90 sourcefile~topohyd_init.f90 topohyd_init.f90 sourcefile~topohyd_init.f90->sourcefile~plant_module.f90 sourcefile~wallo_control.f90 wallo_control.f90 sourcefile~wallo_control.f90->sourcefile~plant_module.f90 sourcefile~wet_cs_output.f90 wet_cs_output.f90 sourcefile~wet_cs_output.f90->sourcefile~plant_module.f90 sourcefile~wet_salt_output.f90 wet_salt_output.f90 sourcefile~wet_salt_output.f90->sourcefile~plant_module.f90

Source Code

     module plant_module
    
      implicit none
     
      integer :: basin_plants = 0       !! number of different plants in the basin
      
      type plant_growth 
         real :: cht = 0.               !! m                |canopy height 
         real :: lai = 0.               !! m**2/m**2        |leaf area index
         real :: plet = 0.              !! mm H2O           |actual ET simulated during life of plant
         real :: plpet = 0.             !! mm H2O           |potential ET simulated during life of plant
         real :: laimxfr = 0.           !! 
         real :: laimxfr_p = 0.         !! 
         real :: hi_adj = 0.            !! (kg/ha)/(kg/ha)  |temperature adjusted harvest index for current time during growing season
         real :: hi_prev = 0.           !! (kg/ha)/(kg/ha)  |optimal harvest index for current time during growing season
         real :: olai = 0.              !!                  |leaf area index (0-1) when leaf area decline begins
         real :: dphu = 0.              !!                  |phu accumulated (0-1) when leaf area decline begins
         real :: d_senes = 0.           !! days             !days since start of senescence
         real :: leaf_frac = 0.         !! none             |fraction of above ground tree biomass that is leaf
         real :: root_dep = 0.          !! mm               |root depth
         real :: root_frac = 0.         !! kg/ha            |root fraction of total plant mass
      end type plant_growth
      
      type plant_mass
        !character(len=4) :: cpnm      !! N/A              |4 letter char code represents organic name
        !real :: mass = 0.             !!kg/ha             |biomass
        !real :: cmass = 0.            !!kg/ha             |carbon mass
        !real :: nmass = 0.            !!kg/ha             |nitrogen mass
        !real :: pmass = 0.            !!kg/ha             |phosphorus mass
        real :: c_fr = 0.             !!none              |carbon fraction
        real :: n_fr = 0.             !!none              |nitrogen fraction
        real :: p_fr = 0.             !!none              |phosphorus fraction
      end type plant_mass
      !type (plant_mass) :: plt_mass_z
      type (plant_mass) :: yld_tbr
      type (plant_mass) :: yld_grn
      type (plant_mass) :: yld_veg
      type (plant_mass) :: yld_rsd
      !type (plant_mass), pointer :: pl_tot
      
      type plant_status
        integer :: idplt = 0            !! none         land cover code from plants.plt
        integer :: bsn_num = 0          !!none              |basin plant number
        character(len=1) :: gro = "y"   !               |land cover status; 'n' = no land cover growing; 'y' = land cover growing
        character(len=1) :: idorm = "n" !! none         |dormancy status; 'n'=land cover growing; 'y'=land cover dormant
        character(len=1) :: mseas = "n" !! none         |monsoon status;  'n'= not in monsoon season; 'y'= in monsoon season
        real :: phumat = 0.             !! C            |heat units to maturity - annual
        real :: phumat_p = 0.           !! C            |heat units to maturity for perennials
        real :: phuacc = 0.             !! fraction     |fraction of plant heat unit accumulated
        real :: phuacc_p = 0.           !! fraction     |fraction of perennial plant heat unit accumulated
        integer :: harv_num = 0         !!              |number of harvest operations for entire simulation
        integer :: harv_num_yr = 0      !!              |number of harvest operations each year
        integer :: curyr_mat = 1        !!
        real :: pop_com = 0.            !! none
        integer :: days_senes = 0.      !! mm           |days since scenesence began (for moisture growth perennials)
        real :: leaf_tov = 0.           !! none         |leaf turnover rate - decline in lai and leaf biomass
        real :: lai_pot = 0.            !! none         |potential leaf area index
        real :: harv_idx = 0.           !! fraction     |harvest index - grain fraction of above ground plant mass
        real :: pest_stress = 0.        !! fraction     |pest (insect, disease) stress on harvest index
        real :: epco = 0.               !! fraction     |water uptake compensation factor for each plant
        real, dimension(:), allocatable :: uptake       !! mm   |water uptake by layer 
      end type plant_status
      
      type plant_stress
        real :: reg = 0.                !! none         |stress factor that most limits plant growth
                                        !!                on current day
        real :: strsw = 1.              !! none         |frac of potential plant growth achieved on the day where the
                                        !!                reduction is caused by water stress
        real :: strsa = 1.              !!              |frac of potential plant growth achieved on the day where the
                                        !!                reduction is caused by air stress
        real :: strsn = 1.              !! none         |frac of potential plant growth achieved on the day where the reduction
                                        !!                is caused by nit stress
        real :: strsp = 1.              !! none         |frac of potential plant growth achieved on the day where the reduction 
                                        !!                is caused by phos stress
        real :: strst = 1.              !! none         |frac of potential plant growth achieved on the day where the reduction
                                        !!                is caused by temp stress
        real :: strss = 1.              !! none         |frac of potential plant growth achieved on the day where the reduction
                                        !!                is caused by salt stress (rtb salt)
        real :: sum_w = 0.              !! none         |sum of water stress
        real :: sum_tmp = 0.            !! none         |sum of temperature stress
        real :: sum_n = 0.              !! none         |sum of nitrogen stress
        real :: sum_p = 0.              !! none         |sum of phosphorus stress
        real :: sum_a = 0.              !! none         |sum of aeration stress 
      end type plant_stress
      
      type auto_operations
        integer :: apply_day = 0                                !! day to apply in prob_unif1 condition
        integer, dimension(:), allocatable :: num_actions       !! current number of actions - reset on January 1 
        integer, dimension(:), allocatable :: days_act          !! days since the action specified in lim_const
      end type auto_operations
      
      type fertilize_future                         !! set to the fert_fut action in the lum.dtl
        character(len=35) :: name = ""              !! name of the fertilizer operation (from the dtbl)
        integer :: num = 0                          !! number of the future fertilizer application (from the dtbl)
        character(len=35) :: fertname = ""          !! fertilizer name in fertilizer.frt
        integer :: fertnum = 0                      !! fertilizer number in fertilizer.frt
        integer :: day_fert = 0                     !! future julian day to apply fert (must be within a year of test) 
        real :: fert_kg = 0.                        !! kg/ha - amount of fertilzer applied
        character(len=35) :: fertop = ""            !! application type in chem_app.ops
        integer :: appnum = 0                       !! application number in chem_app.ops
      end type fertilize_future
      
      type plant_community
       character(len=35) :: name = ""
       integer :: npl = 0               !! number of plants in community
       character(len=16), dimension(:), allocatable :: pl       !! N/A              |plant name
       integer :: pcomdb = 0            !! current plant community database number
       integer :: rot_yr = 1            !! rotation year
       integer :: days_plant = 0        !!               |days since last planting - for conditional scheduling planting
       integer :: days_harv = 0         !!               |days since last harvest - for conditional scheduling planting
       integer :: days_irr = 0          !!               |days since last irrigation - for conditional scheduling planting
       character(len=16) :: last_kill = ""!!               |name of last plant killed
       real :: cht_mx = 0.              !! m             |height of tallest plant in community for pet calculation
       real :: lai_sum = 0.             !! m/m           |sum of lai for each plant
       real :: laimx_sum = 0.           !! m/m           |sum of maximum lai for each plant - for canopy interception
       real :: rsd_covfac = 0.          !!               |average residue cover factor
       type (auto_operations), dimension(:), allocatable :: dtbl            !!d_tble action - to limit number of actions per year 
       integer :: fert_fut_num = 0
       type (fertilize_future), dimension(:), allocatable :: fert_fut       !!
       type (plant_growth), dimension(:), allocatable :: plg    !!plant growth variables
       type (plant_stress), dimension(:), allocatable :: plstr  !!plant stress variables
       type (plant_status), dimension(:), allocatable :: plcur  !!plant status variables
       type (plant_mass), dimension(:), allocatable :: plm      !kg/ha            |total biomass for individual plant in community
      end type plant_community
      type (plant_community), dimension (:), allocatable :: pcom
      type (plant_community), dimension (:), allocatable :: pcom_init
      type (plant_growth) :: plgz
      type (plant_mass) :: plmz
      type (plant_mass) :: o_m1, o_m2, o_m3
      type (plant_stress) :: plstrz

      type basin_crop_yields
        real :: area_ha = 0.        !ha         |area of crop harvested
        real :: yield = 0.          !t          |yield mass removed in harvest
      end type basin_crop_yields
      type (basin_crop_yields), dimension(:), allocatable :: bsn_crop_yld
      type (basin_crop_yields), dimension(:), allocatable :: bsn_crop_yld_aa
      type (basin_crop_yields) :: bsn_crop_yld_z
        
      type plant_carbon
        real :: leaf = .41      !none   |carbon fraction in leaves
        real :: stem = .46      !none   |carbon fraction in stem
        real :: seed = .45      !none   |carbon fraction in seeds
        real :: root = .46      !none   |carbon fraction in roots
      end type plant_carbon
      type (plant_carbon) :: c_frac
            
     end module plant_module