vegetation_adjust_energy_ratio Subroutine

public subroutine vegetation_adjust_energy_ratio(j, je, beadj, be, nucr, tx)

Uses

  • proc~~vegetation_adjust_energy_ratio~~UsesGraph proc~vegetation_adjust_energy_ratio vegetation_adjust_energy_ratio module~snow snow proc~vegetation_adjust_energy_ratio->module~snow module~utilities utilities module~snow->module~utilities

Arguments

Type IntentOptional AttributesName
integer :: j
integer :: je
real(kind=dp) :: beadj
real(kind=dp), intent(in), dimension(:):: be
integer, intent(in), dimension(:, :):: nucr
real(kind=dp), intent(in), dimension(:):: tx

Called by

proc~~vegetation_adjust_energy_ratio~~CalledByGraph proc~vegetation_adjust_energy_ratio vegetation_adjust_energy_ratio proc~crop_growth crop_growth proc~crop_growth->proc~vegetation_adjust_energy_ratio proc~crop_process crop_process proc~crop_process->proc~crop_growth proc~hydrotope_process hydrotope_process proc~hydrotope_process->proc~crop_process proc~runsubbasin runsubbasin proc~runsubbasin->proc~hydrotope_process proc~time_process_day time_process_day proc~time_process_day->proc~runsubbasin proc~time_process_month time_process_month proc~time_process_month->proc~time_process_day proc~time_process_years time_process_years proc~time_process_years->proc~time_process_month program~swim swim program~swim->proc~time_process_years

Contents


Source Code

  subroutine vegetation_adjust_energy_ratio(j, je, beadj, be, nucr, tx)
    !**** PURPOSE: this subroutine adjusts biomass-energy ratio for crop
    !              for higher atmosphere CO2 concentrations
    !              F. Wechsung method (temperature-dependent)
    !**** CALLED IN: CRPMD
    !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    !     PARAMETERS & VARIABLES
    !
    !      >>>>> COMMON PARAMETERS & VARIABLES
    !      alfa = alpha factor for vegetation
    !      be(icr) = biomass-energy ratio for crop
    !      co2ref = atm CO2 in the reference period, ppm
    !      co2sce = atm CO2 in the scenario period, ppm
    !      ic3c4 = switch parameter: 3/4 - C3 or C4 crop?
    !      nucr(j, je) = crop number (database)
    !      tx(j) = average daily temp., degree C
    !      >>>>>

    !      >>>>> STATIC PARAMETERS
    !      aa = coef
    !      bb = coef
    !      c1 = co2ref
    !      c2 = co2sce
    !      cc = coef
    !      ci1 = CO2 internal corr co2ref
    !      ci2 = CO2 internal corr co2sce
    !      deg = local par
    !      del = local par
    !      delq = local par
    !      xlnalfa = local par
    !      >>>>>
    !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    !**** Include common parameters
    use snow, only : bSnowModule, tx_tmp, tmit

    real(dp), dimension(:), intent(in) :: be
    integer, dimension(:, :), intent(in) :: nucr
    real(dp), dimension(:), intent(in) :: tx
    integer j, je
    real(dp) beadj, aa, bb, c1, c2, cc, ci1, ci2, deg, del, delq, xlnalfa
    !###########################
    !#### SNOW MODULE ####
    !###########################
    if (bSnowModule) then
      tx_tmp = tmit
    else
      tx_tmp = tx(j)
    end if
    !###########################
    !**** CALC xlnalfa = f(tx)
    aa = 0.3898E-2
    bb = 0.3769E-5
    cc = 0.3697E-4
    c1 = co2ref
    c2 = co2sce
    ci1 = c1 * 0.7
    ci2 = c2 * 0.7
    del = ci2 - ci1
    delq = ci2 * ci2 - ci1 * ci1
    xlnalfa = aa * del - bb * delq + cc * del * tx_tmp

    !**** CALC degree - different for C3 and C4 crops
    if (ic3c4 .eq. 4) then
      deg = 0.36
    else
      deg = 0.6
    endif

    !**** CALC alfa and beadj
    alfa = exp(xlnalfa) ** deg
    if (alfa .lt. 1) alfa = 1.
    beadj = be(nucr(j, je)) * alfa

    return
  end subroutine vegetation_adjust_energy_ratio