diff --git a/examples/main.jl b/examples/main.jl index 826e9d3..d8cd7c3 100644 --- a/examples/main.jl +++ b/examples/main.jl @@ -5,10 +5,10 @@ N = 10000 seed = 350 Random.seed!(seed) -MimiIWG.run_scc_mcs(DICE, gas=:CO2, trials = N) +MimiIWG.run_scc_mcs(DICE, gas=:CO2, trials=N) Random.seed!(seed) -MimiIWG.run_scc_mcs(FUND, gas=:CO2, trials = N) +MimiIWG.run_scc_mcs(FUND, gas=:CO2, trials=N) Random.seed!(seed) -MimiIWG.run_scc_mcs(PAGE, gas=:CO2, trials = N) +MimiIWG.run_scc_mcs(PAGE, gas=:CO2, trials=N) diff --git a/examples/other_ghg.jl b/examples/other_ghg.jl index 6225483..03d51d1 100644 --- a/examples/other_ghg.jl +++ b/examples/other_ghg.jl @@ -1,8 +1,8 @@ using MimiIWG -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # Deterministic single runs of SC-CH4 and SC-N2O -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # DICE scch4 = MimiIWG.compute_scc(DICE, USG1, gas=:CH4, year=2020, discount=0.025) @@ -16,19 +16,19 @@ scn2o = MimiIWG.compute_scc(FUND, USG1, gas=:N2O, year=2020, discount=0.025) scch4 = MimiIWG.compute_scc(PAGE, USG1, gas=:CH4, year=2020, discount=0.025) scn2o = MimiIWG.compute_scc(PAGE, USG1, gas=:N2O, year=2020, discount=0.025) -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # Full Monte Carlo simulations for SC-CH4 and SC-N2O for each model -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # DICE # (will run for all 3 IWG discount rates if none are specified) -MimiIWG.run_scc_mcs(DICE, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir = "output") -MimiIWG.run_scc_mcs(DICE, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir = "output") +MimiIWG.run_scc_mcs(DICE, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir="output") +MimiIWG.run_scc_mcs(DICE, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir="output") # FUND -MimiIWG.run_scc_mcs(FUND, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir = "output") -MimiIWG.run_scc_mcs(FUND, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir = "output") +MimiIWG.run_scc_mcs(FUND, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir="output") +MimiIWG.run_scc_mcs(FUND, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir="output") # PAGE -MimiIWG.run_scc_mcs(PAGE, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir = "output") -MimiIWG.run_scc_mcs(PAGE, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir = "output") +MimiIWG.run_scc_mcs(PAGE, gas=:CH4, trials=10_000, perturbation_years=[2020], output_dir="output") +MimiIWG.run_scc_mcs(PAGE, gas=:N2O, trials=10_000, perturbation_years=[2020], output_dir="output") diff --git a/src/MimiIWG.jl b/src/MimiIWG.jl index d849554..f2c8c02 100644 --- a/src/MimiIWG.jl +++ b/src/MimiIWG.jl @@ -11,7 +11,7 @@ using MimiDICE2010 using MimiFUND # pinned to version 3.8 in package registration Compat.toml using MimiPAGE2009 using StatsBase -using XLSX: readxlsx +using XLSX:readxlsx export DICE, FUND, PAGE, # export the enumerated model_choice options USG1, USG2, USG3, USG4, USG5 # export the enumerated scenario_choice options diff --git a/src/components/IWG_DICE_ScenarioChoice.jl b/src/components/IWG_DICE_ScenarioChoice.jl index ad80bfb..b7bd133 100644 --- a/src/components/IWG_DICE_ScenarioChoice.jl +++ b/src/components/IWG_DICE_ScenarioChoice.jl @@ -6,21 +6,21 @@ scenarios = Index() # Variables (each one has its value set for the chosen scenario in the first timestep) - l = Variable(index = [time]) # Population - E = Variable(index = [time]) # Total CO2 emissions - forcoth = Variable(index = [time]) # other forcing - al = Variable(index = [time]) # total factor productivity + l = Variable(index=[time]) # Population + E = Variable(index=[time]) # Total CO2 emissions + forcoth = Variable(index=[time]) # other forcing + al = Variable(index=[time]) # total factor productivity k0 = Variable() # initial capital stock # The number for which scenario to use scenario_num = Parameter{Integer}() # Parameters (each one holds all five scenarios) - l_all = Parameter(index = [time, scenarios]) - E_all = Parameter(index = [time, scenarios]) - forcoth_all = Parameter(index = [time, scenarios]) - al_all = Parameter(index = [time, scenarios]) - k0_all = Parameter(index = [scenarios]) + l_all = Parameter(index=[time, scenarios]) + E_all = Parameter(index=[time, scenarios]) + forcoth_all = Parameter(index=[time, scenarios]) + al_all = Parameter(index=[time, scenarios]) + k0_all = Parameter(index=[scenarios]) function run_timestep(p, v, d, t) if is_first(t) diff --git a/src/components/IWG_DICE_climatedynamics.jl b/src/components/IWG_DICE_climatedynamics.jl index 3a0fc8a..757a3c4 100644 --- a/src/components/IWG_DICE_climatedynamics.jl +++ b/src/components/IWG_DICE_climatedynamics.jl @@ -32,7 +32,7 @@ elseif p.t2xco2 < 0.5 v.TATM[t] = v.TA_eq[t] else - v.TATM[t] = v.TATM[t - 1] + p.c1 * ((p.FORC[t] - (p.fco22x/p.t2xco2) * v.TATM[t - 1]) - (p.c3 * (v.TATM[t - 1] - v.TOCEAN[t - 1]))) + v.TATM[t] = v.TATM[t - 1] + p.c1 * ((p.FORC[t] - (p.fco22x / p.t2xco2) * v.TATM[t - 1]) - (p.c3 * (v.TATM[t - 1] - v.TOCEAN[t - 1]))) end # Define function for TOCEAN diff --git a/src/components/IWG_DICE_neteconomy.jl b/src/components/IWG_DICE_neteconomy.jl index 77eeacd..71af0d4 100644 --- a/src/components/IWG_DICE_neteconomy.jl +++ b/src/components/IWG_DICE_neteconomy.jl @@ -42,10 +42,10 @@ v.CPC[t] = 1000 * v.C[t] / p.l[t] # Define function for CPRICE - if t.t==26 + if t.t == 26 v.CPRICE[t] = v.CPRICE[t - 1] else - v.CPRICE[t] = p.pbacktime[t] * 1000 * p.MIU[t] ^ (p.expcost2 - 1) + v.CPRICE[t] = p.pbacktime[t] * 1000 * p.MIU[t]^(p.expcost2 - 1) end end diff --git a/src/components/IWG_DICE_radiativeforcing.jl b/src/components/IWG_DICE_radiativeforcing.jl index c771ebb..c6332b7 100644 --- a/src/components/IWG_DICE_radiativeforcing.jl +++ b/src/components/IWG_DICE_radiativeforcing.jl @@ -16,7 +16,7 @@ MAT_avg = 0.9796 * (p.MAT[t - 1] + p.MAT[t]) / 2 end - v.FORC[t] = p.fco22x * (log((MAT_avg + 0.000001) / 596.4 ) / log(2)) + p.forcoth[t] + v.FORC[t] = p.fco22x * (log((MAT_avg + 0.000001) / 596.4) / log(2)) + p.forcoth[t] end diff --git a/src/components/IWG_DICE_simple_gas_cycle.jl b/src/components/IWG_DICE_simple_gas_cycle.jl index f88dbb1..a203088 100644 --- a/src/components/IWG_DICE_simple_gas_cycle.jl +++ b/src/components/IWG_DICE_simple_gas_cycle.jl @@ -1,40 +1,40 @@ @defcomp IWG_DICE_simple_gas_cycle begin # Output: forcing - F_CH4 = Variable(index = [decades]) # Path of CH4 forcing [W/m^2] - decadal time step - F_N2O = Variable(index = [decades]) # Path of N2O forcing [W/m^2] - decadal time step + F_CH4 = Variable(index=[decades]) # Path of CH4 forcing [W/m^2] - decadal time step + F_N2O = Variable(index=[decades]) # Path of N2O forcing [W/m^2] - decadal time step # Input: emissions - E_CH4A = Parameter(index = [time]) # Annual CH4 emissions - E_N2OA = Parameter(index = [time]) # Annual N2O emissions + E_CH4A = Parameter(index=[time]) # Annual CH4 emissions + E_N2OA = Parameter(index=[time]) # Annual N2O emissions # Atmospheric concentration dynamics coefficients - delta_ch4 = Parameter(default = 1/12) # Annual rate of decay of CH4 (IPCC FAR) - gamma_ch4 = Parameter(default = 0.3597) # Mass to volume conversion factor [ppb CH4/Mt CH4] - alpha_ch4 = Parameter(default = 0.036) # Radiative forcing parameter (TAR page 358) - delta_n2o = Parameter(default = 1/114) # Rate of decay of N2O (IPCC FAR) - gamma_n2o = Parameter(default = 0.2079) # Mass to volume conversion factor [ppb N2O/Mt N] - alpha_n2o = Parameter(default = 0.12) # Radiative forcing parameter - ipcc_adj = Parameter(default = 1.4) # IPCC AR4 adjustment for tropospheric ozone effect (25%) and stratospheric water vapor effect (15%) - - M_pre = Parameter(default = 700) # Pre-industrial CH4 concentrations [ppb](TAR page 358) - N_pre = Parameter(default = 270) # Pre-industrial N2O concentrations [ppb](TAR page 358) + delta_ch4 = Parameter(default=1 / 12) # Annual rate of decay of CH4 (IPCC FAR) + gamma_ch4 = Parameter(default=0.3597) # Mass to volume conversion factor [ppb CH4/Mt CH4] + alpha_ch4 = Parameter(default=0.036) # Radiative forcing parameter (TAR page 358) + delta_n2o = Parameter(default=1 / 114) # Rate of decay of N2O (IPCC FAR) + gamma_n2o = Parameter(default=0.2079) # Mass to volume conversion factor [ppb N2O/Mt N] + alpha_n2o = Parameter(default=0.12) # Radiative forcing parameter + ipcc_adj = Parameter(default=1.4) # IPCC AR4 adjustment for tropospheric ozone effect (25%) and stratospheric water vapor effect (15%) + + M_pre = Parameter(default=700) # Pre-industrial CH4 concentrations [ppb](TAR page 358) + N_pre = Parameter(default=270) # Pre-industrial N2O concentrations [ppb](TAR page 358) - M_AA_2005 = Parameter(default = 1774) # 2005 concentration of CH4 - N_AA_2005 = Parameter(default = 319) # 2005 concentration of N2O + M_AA_2005 = Parameter(default=1774) # 2005 concentration of CH4 + N_AA_2005 = Parameter(default=319) # 2005 concentration of N2O # Other intermediate variables to calculate - M_AA = Variable(index = [time]) # Atmospheric CH4 concentration (annual) - F_CH4A = Variable(index = [time]) # Contribution of atmospheric CH4 to radiative forcing (annual) - N_AA = Variable(index = [time]) # Atmospheric N2O concentration (annual) - F_N2OA = Variable(index = [time]) # Contribution of atmospheric N2O to radiative forcing (annual) + M_AA = Variable(index=[time]) # Atmospheric CH4 concentration (annual) + F_CH4A = Variable(index=[time]) # Contribution of atmospheric CH4 to radiative forcing (annual) + N_AA = Variable(index=[time]) # Atmospheric N2O concentration (annual) + F_N2OA = Variable(index=[time]) # Contribution of atmospheric N2O to radiative forcing (annual) pre_f = Variable() # pre-industrial interaction effect function run_timestep(p, v, d, t) function f(M_A, N_A) # calculate the interaction effect on radiative forcing - return 0.47 * log(1 + 2.01 * 10 ^ -5 * (M_A * N_A) ^ 0.75 + 5.31 * 10^-15 * M_A * (M_A * N_A) ^ 1.52) + return 0.47 * log(1 + 2.01 * 10^-5 * (M_A * N_A)^0.75 + 5.31 * 10^-15 * M_A * (M_A * N_A)^1.52) end # Calculate the annual atmospheric concentrations @@ -45,7 +45,7 @@ v.pre_f = f(p.M_pre, p.N_pre) # only need to calculate this once; used in each timestep below else v.M_AA[t] = (1 - p.delta_ch4) * v.M_AA[t - 1] + p.delta_ch4 * p.M_pre + p.gamma_ch4 * p.E_CH4A[t - 1] - v.N_AA[t] = (1 - p.delta_n2o) * v.N_AA[t - 1] + p.delta_n2o * p.N_pre + p.gamma_n2o * (28/44) * p.E_N2OA[t - 1] + v.N_AA[t] = (1 - p.delta_n2o) * v.N_AA[t - 1] + p.delta_n2o * p.N_pre + p.gamma_n2o * (28 / 44) * p.E_N2OA[t - 1] end # Calculate the annual forcing diff --git a/src/components/IWG_FUND_ScenarioChoice.jl b/src/components/IWG_FUND_ScenarioChoice.jl index c97dc69..93d10c7 100644 --- a/src/components/IWG_FUND_ScenarioChoice.jl +++ b/src/components/IWG_FUND_ScenarioChoice.jl @@ -6,23 +6,23 @@ scenarios = Index() # Variables (each one has its value set for the chosen scenario in the first timestep) - globch4 = Variable(index = [time]) - globn2o = Variable(index = [time]) - pgrowth = Variable(index = [time, regions]) - ypcgrowth = Variable(index = [time, regions]) - aeei = Variable(index = [time, regions]) - acei = Variable(index = [time, regions]) + globch4 = Variable(index=[time]) + globn2o = Variable(index=[time]) + pgrowth = Variable(index=[time, regions]) + ypcgrowth = Variable(index=[time, regions]) + aeei = Variable(index=[time, regions]) + acei = Variable(index=[time, regions]) # The number for which scenario to use scenario_num = Parameter{Integer}() # Parameters (each one holds all five scenarios) - globch4_all = Parameter(index = [time, scenarios]) - globn2o_all = Parameter(index = [time, scenarios]) - pgrowth_all = Parameter(index = [time, regions, scenarios]) - ypcgrowth_all = Parameter(index = [time, regions, scenarios]) - aeei_all = Parameter(index = [time, regions, scenarios]) - acei_all = Parameter(index = [time, regions, scenarios]) + globch4_all = Parameter(index=[time, scenarios]) + globn2o_all = Parameter(index=[time, scenarios]) + pgrowth_all = Parameter(index=[time, regions, scenarios]) + ypcgrowth_all = Parameter(index=[time, regions, scenarios]) + aeei_all = Parameter(index=[time, regions, scenarios]) + acei_all = Parameter(index=[time, regions, scenarios]) function run_timestep(p, v, d, t) if is_first(t) diff --git a/src/components/IWG_FUND_impactsealevelrise.jl b/src/components/IWG_FUND_impactsealevelrise.jl index 93bfe06..e51814a 100644 --- a/src/components/IWG_FUND_impactsealevelrise.jl +++ b/src/components/IWG_FUND_impactsealevelrise.jl @@ -30,17 +30,17 @@ imigrate = Variable(index=[regions,regions]) - incdens = Parameter(default = 0.000635) # Normalization income density - emcst = Parameter(default = 3) # emigration loss benchmark value - immcst = Parameter(default = 0.4) # immigration loss benchmark - dvydl = Parameter(default = 1) # income density elasticity of dryland value - wvel = Parameter(default = 1.16) # wetland value income elasticity - wvbm = Parameter(default = 0.00588) # wetland value benchmark value - slrwvpopdens0 = Parameter(default = 27.5937717888728) # wetland value income normalization value - wvpdl = Parameter(default = 0.47) - wvsl = Parameter(default = -0.11) - dvbm = Parameter(default = 0.004) # dryland value benchmark value - slrwvypc0 = Parameter(default = 25000) + incdens = Parameter(default=0.000635) # Normalization income density + emcst = Parameter(default=3) # emigration loss benchmark value + immcst = Parameter(default=0.4) # immigration loss benchmark + dvydl = Parameter(default=1) # income density elasticity of dryland value + wvel = Parameter(default=1.16) # wetland value income elasticity + wvbm = Parameter(default=0.00588) # wetland value benchmark value + slrwvpopdens0 = Parameter(default=27.5937717888728) # wetland value income normalization value + wvpdl = Parameter(default=0.47) + wvsl = Parameter(default=-0.11) + dvbm = Parameter(default=0.004) # dryland value benchmark value + slrwvypc0 = Parameter(default=25000) pc = Parameter(index=[regions]) slrprtp = Parameter(index=[regions]) diff --git a/src/components/IWG_PAGE_ClimateTemperature.jl b/src/components/IWG_PAGE_ClimateTemperature.jl index 1297eae..82faf2c 100644 --- a/src/components/IWG_PAGE_ClimateTemperature.jl +++ b/src/components/IWG_PAGE_ClimateTemperature.jl @@ -39,12 +39,12 @@ rtl_g_landtemperature = Variable(index=[time], unit="degreeC") rto_g_oceantemperature = Variable(index=[time], unit="degreeC") rt_g_globaltemperature = Variable(index=[time], unit="degreeC") - rt_g0_baseglobaltemp=Variable(unit="degreeC") #needed for feedback in CO2 cycle component - rtl_g0_baselandtemp=Variable(unit="degreeC") #needed for feedback in CH4 and N2O cycles + rt_g0_baseglobaltemp = Variable(unit="degreeC") # needed for feedback in CO2 cycle component + rtl_g0_baselandtemp = Variable(unit="degreeC") # needed for feedback in CH4 and N2O cycles function init(p, v, d) - #calculate global baseline temperature from initial regional temperatures + # calculate global baseline temperature from initial regional temperatures ocean_prop_ortion = 1. - sum(p.area) / 510000000. @@ -52,7 +52,7 @@ v.rtl_g0_baselandtemp = sum(p.rtl_0_realizedtemperature' .* p.area') / sum(p.area) # initial ocean and global temperatures - rto_g0_baseoceantemp = v.rtl_g0_baselandtemp/ p.rlo_ratiolandocean + rto_g0_baseoceantemp = v.rtl_g0_baselandtemp / p.rlo_ratiolandocean v.rt_g0_baseglobaltemp = ocean_prop_ortion * rto_g0_baseoceantemp + (1. - ocean_prop_ortion) * v.rtl_g0_baselandtemp end @@ -84,7 +84,7 @@ end else for rr in d.region - v.rt_realizedtemperature[tt, rr] = v.rt_realizedtemperature[tt-1, rr] + (1 - exp(-(p.y_year[tt] - p.y_year[tt-1]) / p.frt_warminghalflife)) * (v.et_equilibriumtemperature[tt, rr] - v.rt_realizedtemperature[tt-1, rr]) + v.rt_realizedtemperature[tt, rr] = v.rt_realizedtemperature[tt - 1, rr] + (1 - exp(-(p.y_year[tt] - p.y_year[tt - 1]) / p.frt_warminghalflife)) * (v.et_equilibriumtemperature[tt, rr] - v.rt_realizedtemperature[tt - 1, rr]) end end diff --git a/src/components/IWG_PAGE_GDP.jl b/src/components/IWG_PAGE_GDP.jl index 01d27e6..7ac5beb 100644 --- a/src/components/IWG_PAGE_GDP.jl +++ b/src/components/IWG_PAGE_GDP.jl @@ -3,27 +3,27 @@ @defcomp IWG_PAGE_GDP begin # GDP: Gross domestic product $M # GRW: GDP growth rate %/year - region = Index() + region = Index() # Variables - gdp = Variable(index=[time, region], unit="\$M") - cons_consumption = Variable(index=[time, region], unit="\$million") - cons_percap_consumption = Variable(index=[time, region], unit="\$/person") - cons_percap_consumption_0 = Variable(index=[region], unit="\$/person") - yagg_periodspan = Variable(index=[time], unit="year") + gdp = Variable(index=[time, region], unit="\$M") + cons_consumption = Variable(index=[time, region], unit="\$million") + cons_percap_consumption = Variable(index=[time, region], unit="\$/person") + cons_percap_consumption_0 = Variable(index=[region], unit="\$/person") + yagg_periodspan = Variable(index=[time], unit="year") # Parameters - y_year_0 = Parameter(unit="year") - y_year = Parameter(index=[time], unit="year") - grw_gdpgrowthrate = Parameter(index=[time, region], unit="%/year") #From p.32 of Hope 2009 - gdp_0 = Parameter(index=[region], unit="\$M") #GDP in y_year_0 - save_savingsrate = Parameter(unit="%", default=15.00) #pp33 PAGE09 documentation, "savings rate". - pop0_initpopulation = Parameter(index=[region], unit="million person") - pop_population = Parameter(index=[time,region],unit="million person") + y_year_0 = Parameter(unit="year") + y_year = Parameter(index=[time], unit="year") + grw_gdpgrowthrate = Parameter(index=[time, region], unit="%/year") # From p.32 of Hope 2009 + gdp_0 = Parameter(index=[region], unit="\$M") # GDP in y_year_0 + save_savingsrate = Parameter(unit="%", default=15.00) # pp33 PAGE09 documentation, "savings rate". + pop0_initpopulation = Parameter(index=[region], unit="million person") + pop_population = Parameter(index=[time,region], unit="million person") # Saturation, used in impacts - isat0_initialimpactfxnsaturation = Parameter(unit="unitless", default=33.333333333333336) #pp34 PAGE09 documentation - isatg_impactfxnsaturation = Variable(unit="unitless") + isat0_initialimpactfxnsaturation = Parameter(unit="unitless", default=33.333333333333336) # pp34 PAGE09 documentation + isatg_impactfxnsaturation = Variable(unit="unitless") # function init(p, v, d) @@ -33,40 +33,40 @@ # end # end - function run_timestep(p, v, d, t) + function run_timestep(p, v, d, t) - if is_first(t) - v.isatg_impactfxnsaturation = p.isat0_initialimpactfxnsaturation * (1 - p.save_savingsrate/100) - for rr in d.region - v.cons_percap_consumption_0[rr] = (p.gdp_0[rr] / p.pop0_initpopulation[rr])*(1 - p.save_savingsrate / 100) - end + if is_first(t) + v.isatg_impactfxnsaturation = p.isat0_initialimpactfxnsaturation * (1 - p.save_savingsrate / 100) + for rr in d.region + v.cons_percap_consumption_0[rr] = (p.gdp_0[rr] / p.pop0_initpopulation[rr]) * (1 - p.save_savingsrate / 100) end + end # Analysis period ranges - required for abatemnt costs and equity weighting, from Hope (2006) - if is_first(t) - ylo_periodstart = p.y_year_0 - else - ylo_periodstart = (p.y_year[t] + p.y_year[t-1]) / 2 - end + if is_first(t) + ylo_periodstart = p.y_year_0 + else + ylo_periodstart = (p.y_year[t] + p.y_year[t - 1]) / 2 + end - if t.t == length(p.y_year) - yhi_periodend = p.y_year[t] - else - yhi_periodend = (p.y_year[t] + p.y_year[t+1]) / 2 - end + if t.t == length(p.y_year) + yhi_periodend = p.y_year[t] + else + yhi_periodend = (p.y_year[t] + p.y_year[t + 1]) / 2 + end - v.yagg_periodspan[t] = yhi_periodend- ylo_periodstart + v.yagg_periodspan[t] = yhi_periodend - ylo_periodstart - for r in d.region - #eq.28 in Hope 2002 - if is_first(t) - v.gdp[t, r] = p.gdp_0[r] * (1 + (p.grw_gdpgrowthrate[t,r]/100))^(p.y_year[t] - p.y_year_0) - else - v.gdp[t, r] = v.gdp[t-1, r] * (1 + (p.grw_gdpgrowthrate[t,r]/100))^(p.y_year[t] - p.y_year[t-1]) - end - v.cons_consumption[t, r] = v.gdp[t, r] * (1 - p.save_savingsrate / 100) - v.cons_percap_consumption[t, r] = v.cons_consumption[t, r] / p.pop_population[t, r] + for r in d.region + # eq.28 in Hope 2002 + if is_first(t) + v.gdp[t, r] = p.gdp_0[r] * (1 + (p.grw_gdpgrowthrate[t,r] / 100))^(p.y_year[t] - p.y_year_0) + else + v.gdp[t, r] = v.gdp[t - 1, r] * (1 + (p.grw_gdpgrowthrate[t,r] / 100))^(p.y_year[t] - p.y_year[t - 1]) end + v.cons_consumption[t, r] = v.gdp[t, r] * (1 - p.save_savingsrate / 100) + v.cons_percap_consumption[t, r] = v.cons_consumption[t, r] / p.pop_population[t, r] end end +end \ No newline at end of file diff --git a/src/components/IWG_PAGE_ScenarioChoice.jl b/src/components/IWG_PAGE_ScenarioChoice.jl index c62bbdf..f444a3d 100644 --- a/src/components/IWG_PAGE_ScenarioChoice.jl +++ b/src/components/IWG_PAGE_ScenarioChoice.jl @@ -6,31 +6,31 @@ scenarios = Index() # Variables (each one has its value set for the chosen scenario in the first timestep) - gdp_0 = Variable(index = [region], unit="\$M") - grw_gdpgrowthrate = Variable(index = [time, region], unit = "%/year") - GDP_per_cap_focus_0_FocusRegionEU = Variable(unit = "\$/person") - pop0_initpopulation = Variable(index = [region], unit = "million person") - popgrw_populationgrowth = Variable(index=[time, region], unit = "%/year") - e0_baselineCO2emissions = Variable(index = [region], unit = "Mtonne/year") # also called AbatementCostsCO2_e0_baselineemissions and AbatementCostParametersCO2_e0_baselineemissions in two components - e0_globalCO2emissions = Variable(unit = "Mtonne/year") - er_CO2emissionsgrowth = Variable(index = [time, region], unit = "%") # also called AbatementCostsCO2_er_emissionsgrowth - f0_CO2baseforcing = Variable(unit = "W/m2") - exf_excessforcing = Variable(index = [time], unit = "W/m2") + gdp_0 = Variable(index=[region], unit="\$M") + grw_gdpgrowthrate = Variable(index=[time, region], unit="%/year") + GDP_per_cap_focus_0_FocusRegionEU = Variable(unit="\$/person") + pop0_initpopulation = Variable(index=[region], unit="million person") + popgrw_populationgrowth = Variable(index=[time, region], unit="%/year") + e0_baselineCO2emissions = Variable(index=[region], unit="Mtonne/year") # also called AbatementCostsCO2_e0_baselineemissions and AbatementCostParametersCO2_e0_baselineemissions in two components + e0_globalCO2emissions = Variable(unit="Mtonne/year") + er_CO2emissionsgrowth = Variable(index=[time, region], unit="%") # also called AbatementCostsCO2_er_emissionsgrowth + f0_CO2baseforcing = Variable(unit="W/m2") + exf_excessforcing = Variable(index=[time], unit="W/m2") # The number for which scenario to use scenario_num = Parameter{Integer}() # Parameters (each one holds all five scenarios) - gdp_0_all = Parameter(index = [region, scenarios]) - grw_gdpgrowthrate_all = Parameter(index = [time, region, scenarios]) - GDP_per_cap_focus_0_FocusRegionEU_all = Parameter(index = [scenarios]) - pop0_initpopulation_all = Parameter(index = [region, scenarios]) + gdp_0_all = Parameter(index=[region, scenarios]) + grw_gdpgrowthrate_all = Parameter(index=[time, region, scenarios]) + GDP_per_cap_focus_0_FocusRegionEU_all = Parameter(index=[scenarios]) + pop0_initpopulation_all = Parameter(index=[region, scenarios]) popgrw_populationgrowth_all = Parameter(index=[time, region, scenarios]) - e0_baselineCO2emissions_all = Parameter(index = [region, scenarios]) # also called AbatementCostsCO2_e0_baselineemissions and AbatementCostParametersCO2_e0_baselineemissions in two components - e0_globalCO2emissions_all = Parameter(index = [scenarios]) - er_CO2emissionsgrowth_all = Parameter(index = [time, region, scenarios]) # also called AbatementCostsCO2_er_emissionsgrowth - f0_CO2baseforcing_all = Parameter(index = [scenarios]) - exf_excessforcing_all = Parameter(index = [time, scenarios]) + e0_baselineCO2emissions_all = Parameter(index=[region, scenarios]) # also called AbatementCostsCO2_e0_baselineemissions and AbatementCostParametersCO2_e0_baselineemissions in two components + e0_globalCO2emissions_all = Parameter(index=[scenarios]) + er_CO2emissionsgrowth_all = Parameter(index=[time, region, scenarios]) # also called AbatementCostsCO2_er_emissionsgrowth + f0_CO2baseforcing_all = Parameter(index=[scenarios]) + exf_excessforcing_all = Parameter(index=[time, scenarios]) function run_timestep(p, v, d, t) if is_first(t) diff --git a/src/components/IWG_RoeBakerClimateSensitivity.jl b/src/components/IWG_RoeBakerClimateSensitivity.jl index 26c5bb1..d39207e 100644 --- a/src/components/IWG_RoeBakerClimateSensitivity.jl +++ b/src/components/IWG_RoeBakerClimateSensitivity.jl @@ -1,6 +1,6 @@ @defcomp IWG_RoeBakerClimateSensitivity begin - roebakercsparameter = Parameter(default = 0.62) + roebakercsparameter = Parameter(default=0.62) climatesensitivity = Variable() function run_timestep(p, v, d, t) diff --git a/src/core/DICE_main.jl b/src/core/DICE_main.jl index 4e85e87..e3d5691 100644 --- a/src/core/DICE_main.jl +++ b/src/core/DICE_main.jl @@ -1,7 +1,7 @@ """ Returns the IWG version of the DICE 2010 model for the specified scenario. """ -function get_dice_model(scenario_choice::Union{scenario_choice, Nothing}=nothing) +function get_dice_model(scenario_choice::Union{scenario_choice,Nothing}=nothing) # Get the original default version of DICE2010 m = MimiDICE2010.construct_dice() @@ -25,7 +25,7 @@ function get_dice_model(scenario_choice::Union{scenario_choice, Nothing}=nothing update_params!(m, iwg_params) # Add the scenario choice component and load all the scenario parameter values - add_comp!(m, IWG_DICE_ScenarioChoice, :IWGScenarioChoice; before = :grosseconomy) + add_comp!(m, IWG_DICE_ScenarioChoice, :IWGScenarioChoice; before=:grosseconomy) set_dimension!(m, :scenarios, length(scenarios)) set_dice_all_scenario_params!(m) @@ -44,8 +44,8 @@ set_dice_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, comp_name: the name of the IWGScenarioChoice component in the model, defaults to :IWGScenarioChoice connect: whether or not to connect the outgoing variables to the other components who depend on them as parameter values """ -function set_dice_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, connect::Bool = true) - params_dict = Dict{Symbol, Array}([k=>[] for k in dice_scenario_specific_params]) +function set_dice_all_scenario_params!(m::Model; comp_name::Symbol=:IWGScenarioChoice, connect::Bool=true) + params_dict = Dict{Symbol,Array}([k => [] for k in dice_scenario_specific_params]) # add an array of each scenario's value to the dictionary for scenario in scenarios @@ -66,11 +66,11 @@ function set_dice_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenari end if connect - connect_all!(m, [:grosseconomy, :neteconomy], comp_name=>:l) - connect_param!(m, :co2cycle=>:E, comp_name=>:E) - connect_param!(m, :radiativeforcing=>:forcoth, comp_name=>:forcoth) - connect_param!(m, :grosseconomy=>:al, comp_name=>:al) - connect_param!(m, :grosseconomy=>:k0, comp_name=>:k0) + connect_all!(m, [:grosseconomy, :neteconomy], comp_name => :l) + connect_param!(m, :co2cycle => :E, comp_name => :E) + connect_param!(m, :radiativeforcing => :forcoth, comp_name => :forcoth) + connect_param!(m, :grosseconomy => :al, comp_name => :al) + connect_param!(m, :grosseconomy => :k0, comp_name => :k0) end end @@ -86,7 +86,7 @@ function load_dice_scenario_params(scenario_choice, scenario_file=nothing) delta = 0.1 # Capital depreciation rate [yr^-1], from DICE2010 s = 0.23 # Approximate optimal savings in DICE2010 - params = Dict{Any, Any}() + params = Dict{Any,Any}() nyears = length(dice_years) # Get the scenario number @@ -120,10 +120,10 @@ function load_dice_scenario_params(scenario_choice, scenario_file=nothing) al = zeros(nyears) K = zeros(nyears) al[1] = A0 - K[1] = (Y[1] / al[1] / (N[1] ^ (1 - gamma))) ^ (1 / gamma) + K[1] = (Y[1] / al[1] / (N[1]^(1 - gamma)))^(1 / gamma) for t in 2:nyears - K[t] = K[t-1] * (1 - delta) ^ 10 + s * Y[t-1] * 10 - al[t] = Y[t] / (N[t] + eps()) ^ (1 - gamma) / (K[t] + eps()) ^ gamma + K[t] = K[t - 1] * (1 - delta)^10 + s * Y[t - 1] * 10 + al[t] = Y[t] / (N[t] + eps())^(1 - gamma) / (K[t] + eps())^gamma end # Update these parameters for grosseconomy component @@ -138,7 +138,7 @@ end """ function load_dice_iwg_params() - params = Dict{Any, Any}() + params = Dict{Any,Any}() nyears = length(dice_years) # Replace some parameter values to match EPA's matlab code @@ -190,7 +190,7 @@ function get_dice_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, nyears = length(dice_years) DF = zeros(nyears) first = findfirst(isequal(year), dice_years) - DF[first:end] = [1/(1+discount)^t for t in 0:(nyears-first)] + DF[first:end] = [1 / (1 + discount)^t for t in 0:(nyears - first)] return diff .* DF else return diff @@ -230,7 +230,7 @@ function add_dice_marginal_emissions!(m::Model, gas::Symbol, year=nothing) f_delta = [_get_dice_additional_forcing(scenario_num, gas, year)..., zeros(11)...] end - add_comp!(m, Mimi.adder, :additional_forcing, before = :radiativeforcing) + add_comp!(m, Mimi.adder, :additional_forcing, before=:radiativeforcing) connect_param!(m, :additional_forcing => :input, :IWGScenarioChoice => :forcoth) set_param!(m, :additional_forcing, :add, f_delta) connect_param!(m, :radiativeforcing => :forcoth, :additional_forcing => :output) @@ -270,7 +270,7 @@ end Returns the Social Cost of the specified `gas` for a given `year` and `discount` rate from one deterministic run of the IWG-DICE model for the specified scenario. """ -function compute_dice_scc(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; domestic::Bool = false, horizon::Int = _default_horizon) +function compute_dice_scc(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; domestic::Bool=false, horizon::Int=_default_horizon) # Check if the emissions year is valid, and whether or not we need to interpolate _is_mid_year = false @@ -288,14 +288,14 @@ function compute_dice_scc(scenario_choice::scenario_choice, gas::Symbol, year::I DF = zeros(length(annual_years)) first = findfirst(isequal(year), annual_years) - DF[first:end] = [1/(1+discount)^t for t in 0:(length(annual_years)-first)] + DF[first:end] = [1 / (1 + discount)^t for t in 0:(length(annual_years) - first)] scc = sum(annual_md .* DF) if _is_mid_year # need to calculate SCC for next year in time index as well, then interpolate for desired year lower_scc = scc next_year = dice_years[findfirst(isequal(year), dice_years) + 1] - upper_scc = compute_dice_scc(scenario_choice, gas, next_year, discount, domestic = false, horizon = horizon) + upper_scc = compute_dice_scc(scenario_choice, gas, next_year, discount, domestic=false, horizon=horizon) scc = _interpolate([lower_scc, upper_scc], [year, next_year], [mid_year])[1] end diff --git a/src/core/DICE_other_ghg.jl b/src/core/DICE_other_ghg.jl index dc0a3bf..1ea9372 100644 --- a/src/core/DICE_other_ghg.jl +++ b/src/core/DICE_other_ghg.jl @@ -3,7 +3,7 @@ other_GHG_input_file = joinpath(@__DIR__, "../../data/IWG_inputs/DICE/CH4N20emis f = openxl(other_GHG_input_file) dice_annual_years = Vector{Int}(readxl(f, "CH4annual!A2:A301")[:]) -decades = dice_annual_years[1]:10:dice_annual_years[end]-9 +decades = dice_annual_years[1]:10:dice_annual_years[end] - 9 E_CH4A_all = readxl(f, "CH4annual!B2:F301") E_N2OA_all = readxl(f, "N20annual!B2:F301") diff --git a/src/core/FUND_main.jl b/src/core/FUND_main.jl index 9993d72..85fdd02 100644 --- a/src/core/FUND_main.jl +++ b/src/core/FUND_main.jl @@ -2,7 +2,7 @@ Returns the IWG version of the FUND3.8 model without any scenario parameters set yet. Need to call apply_scenario!(m, scenario_choice) before this model can be run. """ -function get_fund_model(scenario_choice::Union{scenario_choice, Nothing} = nothing) +function get_fund_model(scenario_choice::Union{scenario_choice,Nothing}=nothing) # Get the default FUND model m = getfund() @@ -11,11 +11,11 @@ function get_fund_model(scenario_choice::Union{scenario_choice, Nothing} = nothi replace!(m, :impactsealevelrise => IWG_FUND_impactsealevelrise) # Add Roe Baker Climate Sensitivity parameter and make connection from Climate Dynamics component - add_comp!(m, IWG_RoeBakerClimateSensitivity, :roebakerclimatesensitivity; before = :climatedynamics) + add_comp!(m, IWG_RoeBakerClimateSensitivity, :roebakerclimatesensitivity; before=:climatedynamics) connect_param!(m, :climatedynamics, :climatesensitivity, :roebakerclimatesensitivity, :climatesensitivity) # Add the scenario choice component and load all the scenario parameter values - add_comp!(m, IWG_FUND_ScenarioChoice, :IWGScenarioChoice; before = :population) + add_comp!(m, IWG_FUND_ScenarioChoice, :IWGScenarioChoice; before=:population) set_dimension!(m, :scenarios, length(scenarios)) set_fund_all_scenario_params!(m) @@ -34,7 +34,7 @@ set_fund_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, comp_name: the name of the IWGScenarioChoice component in the model, defaults to :IWGScenarioChoice connect: whether or not to connect the outgoing variables to the other components who depend on them as parameter values """ -function set_fund_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, connect::Bool = true) +function set_fund_all_scenario_params!(m::Model; comp_name::Symbol=:IWGScenarioChoice, connect::Bool=true) # reshape each array of values into one array for each param, then set that value in the model for (k, v) in _fund_scenario_params_dict @@ -62,10 +62,10 @@ end # Function from original MimiFUND code, modified for IWG CH4 and N2O and removing # :SF6 for now as we validate that gas -function add_fund_marginal_emissions!(m, year = nothing; gas = :CO2, pulse_size = 1e7) +function add_fund_marginal_emissions!(m, year=nothing; gas=:CO2, pulse_size=1e7) # Add additional emissions to m - add_comp!(m, MimiFUND.emissionspulse, before = :climateco2cycle) + add_comp!(m, MimiFUND.emissionspulse, before=:climateco2cycle) nyears = length(Mimi.time_labels(m)) addem = zeros(nyears) if year !== nothing @@ -97,7 +97,7 @@ end If no `discount` is specified, will return undiscounted marginal damages. The `income_normalized` parameter indicates whether the damages from the marginal run should be scaled by the ratio of incomes between the base and marginal runs. """ -function get_fund_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; regional::Bool = false, income_normalized::Bool=true) +function get_fund_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; regional::Bool=false, income_normalized::Bool=true) # Check the emissions year if ! (year in fund_years) @@ -106,7 +106,7 @@ function get_fund_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, base = get_fund_model(scenario_choice) marginal = Model(base) - add_fund_marginal_emissions!(marginal, year, gas = gas) + add_fund_marginal_emissions!(marginal, year, gas=gas) run(base) run(marginal) @@ -121,14 +121,14 @@ function get_fund_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, if regional diff = (damages2 .- damages1) * 1e-7 * fund_inflator else - diff = sum((damages2 .- damages1), dims = 2) * 1e-7 * fund_inflator + diff = sum((damages2 .- damages1), dims=2) * 1e-7 * fund_inflator end nyears = length(fund_years) if discount != 0 DF = zeros(nyears) first = MimiFUND.getindexfromyear(year) - DF[first:end] = [1/(1+discount)^t for t in 0:(nyears-first)] + DF[first:end] = [1 / (1 + discount)^t for t in 0:(nyears - first)] return diff[1:nyears, :] .* DF else return diff[1:nyears, :] @@ -143,7 +143,7 @@ end If no `year` is specified, will return SC for $_default_year. If no `discount` is specified, will return SC for a discount rate of $(_default_discount * 100)%. """ -function compute_fund_scc(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; domestic::Bool = false, income_normalized::Bool = true) +function compute_fund_scc(scenario_choice::scenario_choice, gas::Symbol, year::Int, discount::Float64; domestic::Bool=false, income_normalized::Bool=true) # Check the emissions year if !(year in fund_years) @@ -151,9 +151,9 @@ function compute_fund_scc(scenario_choice::scenario_choice, gas::Symbol, year::I end if domestic - md = get_fund_marginaldamages(scenario_choice, gas, year, discount, income_normalized = income_normalized, regional = true)[:, 1] + md = get_fund_marginaldamages(scenario_choice, gas, year, discount, income_normalized=income_normalized, regional=true)[:, 1] else - md = get_fund_marginaldamages(scenario_choice, gas, year, discount, income_normalized = income_normalized, regional = false) + md = get_fund_marginaldamages(scenario_choice, gas, year, discount, income_normalized=income_normalized, regional=false) end scc = sum(md[MimiFUND.getindexfromyear(year):end]) # Sum from the perturbation year to the end (avoid the NaN in the first timestep) diff --git a/src/core/PAGE_main.jl b/src/core/PAGE_main.jl index 01c150b..3811cbf 100644 --- a/src/core/PAGE_main.jl +++ b/src/core/PAGE_main.jl @@ -1,7 +1,7 @@ """ Returns the IWG version of the PAGE 2009 model for the specified scenario. """ -function get_page_model(scenario_choice::Union{scenario_choice, Nothing}=nothing) +function get_page_model(scenario_choice::Union{scenario_choice,Nothing}=nothing) # Get original version of PAGE m = MimiPAGE2009.get_model() @@ -21,7 +21,7 @@ function get_page_model(scenario_choice::Union{scenario_choice, Nothing}=nothing dim = Mimi.Dimension(page_years) Mimi._propagate_time_dim!(m.md, dim) - Mimi._propagate_first_last!(m.md; first = page_years[1], last = page_years[end]) + Mimi._propagate_first_last!(m.md; first=page_years[1], last=page_years[end]) # Replace modified components replace!(m, :GDP => IWG_PAGE_GDP) @@ -48,7 +48,7 @@ function get_page_model(scenario_choice::Union{scenario_choice, Nothing}=nothing end # Add the scenario choice component and load all the scenario parameter values - add_comp!(m, IWG_PAGE_ScenarioChoice, :IWGScenarioChoice; before = :co2emissions) + add_comp!(m, IWG_PAGE_ScenarioChoice, :IWGScenarioChoice; before=:co2emissions) set_dimension!(m, :scenarios, length(scenarios)) set_page_all_scenario_params!(m) @@ -67,7 +67,7 @@ set_page_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, comp_name: the name of the IWGScenarioChoice component in the model, defaults to :IWGScenarioChoice connect: whether or not to connect the outgoing variables to the other components who depend on them as parameter values """ -function set_page_all_scenario_params!(m::Model; comp_name::Symbol = :IWGScenarioChoice, connect::Bool = true) +function set_page_all_scenario_params!(m::Model; comp_name::Symbol=:IWGScenarioChoice, connect::Bool=true) # reshape each array of values into one array for each param, then set that value in the model for (k, v) in _page_scenario_params_dict @@ -100,15 +100,15 @@ end function load_page_iwg_params() # Build a dictionary of values to return - p = Dict{Any, Any}() + p = Dict{Any,Any}() # Specify the scenario parameter file path fn = joinpath(iwg_page_input_file) xf = readxlsx(fn) - #------------------------ + # ------------------------ # 1. BASE DATA sheet - #------------------------ + # ------------------------ # Socioeconomics p["lat_latitude"] = convert(Array{Float64}, xf["Base data"]["M24:M31"])[:, 1] @@ -169,15 +169,15 @@ function load_page_iwg_params() p["AbatementCostParametersN2O_bau_businessasusualemissions"] = convert(Array{Float64}, xf["Base data"]["C86:L93"]') p["AbatementCostParametersLin_bau_businessasusualemissions"] = convert(Array{Float64}, xf["Base data"]["C95:L102"]') - #elasticity of utility + # elasticity of utility p["emuc_utilityconvexity"] = xf["Base data"]["B10:B10"][1] - #pure rate of time preference + # pure rate of time preference p["ptp_timepreference"] = xf["Base data"]["B8:B8"][1] - #------------------------ + # ------------------------ # 2. LIBRARY DATA sheet - #------------------------ + # ------------------------ p["sens_climatesensitivity"] = xf["Library data"]["C18:C18"][1] # Climate sensitivity @@ -197,9 +197,9 @@ function load_page_iwg_params() p["civvalue_civilizationvalue"] = xf["Library data"]["C44:C44"][1] - #------------------------ + # ------------------------ # 3. POLICY A sheet - #------------------------ + # ------------------------ # Emissions growth (all but CO2) p["er_CH4emissionsgrowth"] = convert(Array{Float64}, xf["Policy A"]["B14:K21"]') # CH4 emissions growth @@ -235,17 +235,17 @@ function getpageindexlengthfromyear(year) error("Invalid PAGE year: $year.") end - return page_years[i] - page_years[i-1] + return page_years[i] - page_years[i - 1] end function getperiodlength(year) - if year==2010 + if year == 2010 return 10 end i = getpageindexfromyear(year) - return (page_years[i+1] - page_years[i-1]) / 2 + return (page_years[i + 1] - page_years[i - 1]) / 2 end @@ -274,17 +274,17 @@ function get_page_marginaldamages(scenario_choice::scenario_choice, gas::Symbol, end marg_damages = (marg_impacts .- base_impacts) ./ (gas == :CO2 ? 100_000 : 1) # TODO: comment with specified units here - + if regional return marg_damages else - return sum(marg_damages, dims = 2) # sum along second dimension to get global values + return sum(marg_damages, dims=2) # sum along second dimension to get global values end end @defcomp PAGE_marginal_CO2_emissions begin - er_CO2emissionsgrowth = Variable(index=[time,region], unit = "%") - marginal_emissions_growth = Parameter(index=[time,region], unit = "%", default = zeros(10,8)) + er_CO2emissionsgrowth = Variable(index=[time,region], unit="%") + marginal_emissions_growth = Parameter(index=[time,region], unit="%", default=zeros(10, 8)) function run_timestep(p, v, d, t) if is_first(t) v.er_CO2emissionsgrowth[:, :] = p.marginal_emissions_growth[:, :] @@ -292,7 +292,7 @@ end end end -function get_marginal_page_models(; scenario_choice::Union{scenario_choice, Nothing}=nothing, gas::Symbol=:CO2, year=nothing, discount=nothing) +function get_marginal_page_models(; scenario_choice::Union{scenario_choice,Nothing}=nothing, gas::Symbol=:CO2, year=nothing, discount=nothing) base = get_page_model(scenario_choice) if discount != nothing @@ -301,11 +301,11 @@ function get_marginal_page_models(; scenario_choice::Union{scenario_choice, Noth marginal = Model(base) if gas == :CO2 - add_comp!(marginal, PAGE_marginal_CO2_emissions, :marginal_emissions; before = :co2emissions) + add_comp!(marginal, PAGE_marginal_CO2_emissions, :marginal_emissions; before=:co2emissions) connect_param!(marginal, :co2emissions => :er_CO2emissionsgrowth, :marginal_emissions => :er_CO2emissionsgrowth) connect_param!(marginal, :AbatementCostsCO2 => :er_emissionsgrowth, :marginal_emissions => :er_CO2emissionsgrowth) elseif gas in [:CH4, :N2O] - add_comp!(marginal, Mimi.adder, :marginal_forcing; before = :TotalForcing) + add_comp!(marginal, Mimi.adder, :marginal_forcing; before=:TotalForcing) set_param!(marginal, :marginal_forcing, :add, zeros(10)) connect_param!(marginal, :marginal_forcing => :input, :IWGScenarioChoice => :exf_excessforcing, ignoreunits=true) connect_param!(marginal, :TotalForcing => :exf_excessforcing, :marginal_forcing => :output, ignoreunits=true) @@ -340,7 +340,7 @@ function perturb_marginal_page_emissions!(base::Model, marginal::Model, gas::Sym # Calculate pulse ER_SCC = 100 * -100000 / (base_glob0_emissions * getperiodlength(emissionyear)) - pulse = er_co2_a - ER_SCC * (er_co2_a/100) * (base_glob0_emissions / e_co2_g[i]) + pulse = er_co2_a - ER_SCC * (er_co2_a / 100) * (base_glob0_emissions / e_co2_g[i]) marginal_emissions_growth = copy(base[:co2emissions, :er_CO2emissionsgrowth]) marginal_emissions_growth[i, :] = pulse @@ -372,11 +372,11 @@ function compute_page_scc(scenario_choice::scenario_choice, gas::Symbol, year::I elseif ! (year in page_years) _need_to_interpolate = true # boolean flag for if the desired SCC years is in the middle of the model's time index mid_year = year # save the desired SCC year to interpolate later - year = filter(x-> x < year, page_years)[end] # use the last year less than the desired year as the lower scc value + year = filter(x -> x < year, page_years)[end] # use the last year less than the desired year as the lower scc value end base, marginal = get_marginal_page_models(scenario_choice=scenario_choice, gas=gas, year=year, discount=discount) - DF = [(1 / (1 + discount)) ^ (Y - 2000) for Y in page_years] + DF = [(1 / (1 + discount))^(Y - 2000) for Y in page_years] idx = getpageindexfromyear(year) if domestic @@ -384,12 +384,12 @@ function compute_page_scc(scenario_choice::scenario_choice, gas::Symbol, year::I td_marginal = sum(marginal[:EquityWeighting, :addt_equityweightedimpact_discountedaggregated][:, 2]) else td_base = base[:EquityWeighting, :td_totaldiscountedimpacts] - td_marginal = marginal[:EquityWeighting, :td_totaldiscountedimpacts] + td_marginal = marginal[:EquityWeighting, :td_totaldiscountedimpacts] end EMUC = base[:EquityWeighting, :emuc_utilityconvexity] - UDFT_base = DF[idx] * (base[:EquityWeighting, :cons_percap_consumption][idx, 1] / base[:EquityWeighting, :cons_percap_consumption_0][1]) .^ (-EMUC) - UDFT_marginal = DF[idx] * (marginal[:EquityWeighting, :cons_percap_consumption][idx, 1] / base[:EquityWeighting, :cons_percap_consumption_0][idx]) ^ (-EMUC) + UDFT_base = DF[idx] * (base[:EquityWeighting, :cons_percap_consumption][idx, 1] / base[:EquityWeighting, :cons_percap_consumption_0][1]).^(-EMUC) + UDFT_marginal = DF[idx] * (marginal[:EquityWeighting, :cons_percap_consumption][idx, 1] / base[:EquityWeighting, :cons_percap_consumption_0][idx])^(-EMUC) pulse_size = gas == :CO2 ? 100_000 : 1 scc = ((td_marginal / UDFT_marginal) - (td_base / UDFT_base)) / pulse_size * page_inflator diff --git a/src/core/constants.jl b/src/core/constants.jl index 98dd508..1e3a596 100644 --- a/src/core/constants.jl +++ b/src/core/constants.jl @@ -1,7 +1,7 @@ # Model and scenario choices @enum model_choice DICE FUND PAGE -@enum scenario_choice USG1=1 USG2=2 USG3=3 USG4=4 USG5=5 +@enum scenario_choice USG1 = 1 USG2 = 2 USG3 = 3 USG4 = 4 USG5 = 5 const scenarios = [USG1, USG2, USG3, USG4, USG5] # for use in iterating # const tsd_scenario_names = ["IMAGE", "MERGE Optimistic", "MESSAGE", "MiniCAM Base", "5th Scenario"] @@ -17,9 +17,9 @@ const RBdistribution_file = joinpath(@__DIR__, "../../data/IWG_inputs/DICE/2009 const RB_cs_values = Vector{Float64}(readxl(RBdistribution_file, "Sheet1!A2:A1001")[:, 1]) # cs values const RB_cs_probs = Vector{Float64}(readxl(RBdistribution_file, "Sheet1!B2:B1001")[:, 1]) # probabilities associated with those values -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # 1. DICE specific constants -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ const iwg_dice_input_file = joinpath(@__DIR__, "../../data/IWG_inputs/DICE/SCC_input_EMFscenarios.xls") @@ -28,7 +28,7 @@ const dice_years = 2005:dice_ts:2405 # time dimension of the IWG's DICE model const dice_inflate = 122.58 / 114.52 # World GDP inflator 2005 => 2007 -const dice_scenario_convert = Dict{scenario_choice, String}( # convert from standard names to the DICE-specific names used in the input files +const dice_scenario_convert = Dict{scenario_choice,String}( # convert from standard names to the DICE-specific names used in the input files USG1 => "IMAGE", USG2 => "MERGEoptimistic", USG3 => "MESSAGE", @@ -46,7 +46,7 @@ const dice_scenario_specific_params = [ function _dice_normalization_factor(gas::Symbol) if gas == :CO2 - return 1e3 * 12/44 # Convert from trillion$/GtC/yr to $/tCO2/yr + return 1e3 * 12 / 44 # Convert from trillion$/GtC/yr to $/tCO2/yr elseif gas in [:CH4, :N2O] return 1e6 # Convert from trillion$/MtX/yr to $/tX/yr else @@ -54,9 +54,9 @@ function _dice_normalization_factor(gas::Symbol) end end -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # 2. FUND specific constants -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ const iwg_fund_datadir = joinpath(@__DIR__, "../../data/IWG_inputs/FUND/") @@ -64,7 +64,7 @@ const fund_inflator = 1.3839 # 1990(?)$ => 2007$ const fund_years = 1950:2300 # number of years to include for the SCC calculation, even though model is run to 3000 -const fund_scenario_convert = Dict{scenario_choice, String}( # convert from standard names to the FUND-specific names used in the input files +const fund_scenario_convert = Dict{scenario_choice,String}( # convert from standard names to the FUND-specific names used in the input files USG1 => "IMAGE", USG2 => "MERGE Optimistic", USG3 => "MESSAGE", @@ -83,27 +83,27 @@ const fund_scenario_specific_params = [ # Load the dictionary of scenario-specific FUND parameters from their excel files once -_fund_scenario_params_dict = Dict{String, Array}([k=>[] for k in fund_scenario_specific_params]) +_fund_scenario_params_dict = Dict{String,Array}([k => [] for k in fund_scenario_specific_params]) for scen in scenarios scenario_file = joinpath(iwg_fund_datadir, "Parameter - EMF22 $(fund_scenario_convert[scen]).xlsm") - scenario_params = Dict{Any, Any}() + scenario_params = Dict{Any,Any}() f = readxlsx(scenario_file) for p in ["ypcgrowth", "pgrowth", "AEEI", "ACEI", "ch4", "n2o"] scenario_params[lowercase(p)] = f[p]["B2:Q1052"] end - scenario_params["globch4"] = sum(Array{Float64,2}(scenario_params["ch4"]), dims = 2)[:] # sum horizontally for global emissions - scenario_params["globn2o"] = sum(Array{Float64,2}(scenario_params["n2o"]), dims = 2)[:] + scenario_params["globch4"] = sum(Array{Float64,2}(scenario_params["ch4"]), dims=2)[:] # sum horizontally for global emissions + scenario_params["globn2o"] = sum(Array{Float64,2}(scenario_params["n2o"]), dims=2)[:] for p in fund_scenario_specific_params push!(_fund_scenario_params_dict[p], scenario_params[p]) end end -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ # 3. PAGE specific constants -#------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ const iwg_page_datadir = joinpath(@__DIR__, "../../data/IWG_inputs/PAGE/") const iwg_page_input_file = joinpath(iwg_page_datadir, "PAGE09 v1.7 SCCO2 (550 Avg, for 2013 SCC technical update - Input files).xlsx") # One input file used for RB distribution in mcs @@ -126,7 +126,7 @@ const page_scenario_specific_params = [ "exf_excessforcing" ] -const page_scenario_convert = Dict{scenario_choice, String}( # convert from standard names to the PAGE specific names used in the input files +const page_scenario_convert = Dict{scenario_choice,String}( # convert from standard names to the PAGE specific names used in the input files USG1 => "IMAGE", USG2 => "MERGE", USG3 => "MESSAGE", @@ -136,17 +136,17 @@ const page_scenario_convert = Dict{scenario_choice, String}( # convert from s # Load the dictionary of scenario-specific PAGE parameters from their excel files once -_page_scenario_params_dict = Dict{String, Array}([k => [] for k in page_scenario_specific_params]) +_page_scenario_params_dict = Dict{String,Array}([k => [] for k in page_scenario_specific_params]) for scen in scenarios - params = Dict{Any, Any}() + params = Dict{Any,Any}() # Specify the scenario parameter file path fn = joinpath(iwg_page_datadir, "PAGE09 v1.7 SCCO2 ($(page_scenario_convert[scen]), for 2013 SCC technical update - Input files).xlsx") xf = readxlsx(fn) params["pop0_initpopulation"] = dropdims(convert(Array{Float64}, xf["Base data"]["E24:E31"]), dims=2) # Population base year - params["popgrw_populationgrowth"]= convert(Array{Float64}, xf["Base data"]["C47:L54"]') # Population growth rate + params["popgrw_populationgrowth"] = convert(Array{Float64}, xf["Base data"]["C47:L54"]') # Population growth rate params["gdp_0"] = dropdims(convert(Array{Float64}, xf["Base data"]["D24:D31"]), dims=2) # GDP base year params["grw_gdpgrowthrate"] = convert(Array{Float64}, xf["Base data"]["C36:L43"]') # GDP growth rate params["GDP_per_cap_focus_0_FocusRegionEU"] = params["gdp_0"][1] / params["pop0_initpopulation"][1] # EU initial income diff --git a/src/core/main.jl b/src/core/main.jl index 1b36a3c..f92d98f 100644 --- a/src/core/main.jl +++ b/src/core/main.jl @@ -24,7 +24,7 @@ julia> set_param!(m2, :IWGScenarioChoice, :scenario_num, 4) julia> run(m2) """ -function get_model(model::model_choice, scenario_choice::Union{scenario_choice, Nothing} = nothing) +function get_model(model::model_choice, scenario_choice::Union{scenario_choice,Nothing}=nothing) # dispatch on provided model choice if model == DICE @@ -57,10 +57,10 @@ values will be summed across regions to return global marginal damages. `gas` can be one of :CO2, :CH4, or :N2O, and will default to :CO2 if nothing is specified. """ function get_marginaldamages(model::model_choice, scenario_choice::scenario_choice; - gas::Union{Symbol, Nothing} = nothing, - year::Union{Int, Nothing} = nothing, - discount::Union{Float64, Nothing} = nothing, - regional::Bool = false) + gas::Union{Symbol,Nothing}=nothing, + year::Union{Int,Nothing}=nothing, + discount::Union{Float64,Nothing}=nothing, + regional::Bool=false) # Check the gas if gas === nothing @@ -86,9 +86,9 @@ function get_marginaldamages(model::model_choice, scenario_choice::scenario_choi if model == DICE return get_dice_marginaldamages(scenario_choice, gas, year, discount) elseif model == FUND - return get_fund_marginaldamages(scenario_choice, gas, year, discount, regional = regional) + return get_fund_marginaldamages(scenario_choice, gas, year, discount, regional=regional) elseif model == PAGE - return get_page_marginaldamages(scenario_choice, gas, year, discount, regional = regional) + return get_page_marginaldamages(scenario_choice, gas, year, discount, regional=regional) else error() end @@ -112,11 +112,11 @@ the returned SCC value are [2007\$ / metric ton of `gas`]. `scenario_choice` must be one of the following enums: USG1, USG2, USG3, USG4, or USG5. `gas` can be one of :CO2, :CH4, or :N2O, and will default to :CO2 if nothing is specified. """ -function compute_scc(model::model_choice, scenario_choice::scenario_choice = nothing; - gas::Union{Symbol, Nothing} = nothing, - year::Union{Int, Nothing} = nothing, - discount::Union{Float64, Nothing} = nothing, - domestic::Bool = false) +function compute_scc(model::model_choice, scenario_choice::scenario_choice=nothing; + gas::Union{Symbol,Nothing}=nothing, + year::Union{Int,Nothing}=nothing, + discount::Union{Float64,Nothing}=nothing, + domestic::Bool=false) # Check the gas if gas === nothing @@ -140,11 +140,11 @@ function compute_scc(model::model_choice, scenario_choice::scenario_choice = not # dispatch on provided model choice if model == DICE - return compute_dice_scc(scenario_choice, gas, year, discount, domestic = domestic) + return compute_dice_scc(scenario_choice, gas, year, discount, domestic=domestic) elseif model == FUND - return compute_fund_scc(scenario_choice, gas, year, discount, domestic = domestic) + return compute_fund_scc(scenario_choice, gas, year, discount, domestic=domestic) elseif model == PAGE - return compute_page_scc(scenario_choice, gas, year, discount, domestic = domestic) + return compute_page_scc(scenario_choice, gas, year, discount, domestic=domestic) else error() end diff --git a/src/core/utils.jl b/src/core/utils.jl index 874f2f2..0fb4855 100644 --- a/src/core/utils.jl +++ b/src/core/utils.jl @@ -9,17 +9,17 @@ end # helper function for connecting a list of (compname, paramname) pairs all to the same source pair -function connect_all!(m::Model, comps::Vector{Pair{Symbol, Symbol}}, src::Pair{Symbol, Symbol}) +function connect_all!(m::Model, comps::Vector{Pair{Symbol,Symbol}}, src::Pair{Symbol,Symbol}) for dest in comps connect_param!(m, dest, src) end end -#helper function for connecting a list of compnames all to the same source pair. The parameter name in all the comps must be the same as in the src pair. -function connect_all!(m::Model, comps::Vector{Symbol}, src::Pair{Symbol, Symbol}) +# helper function for connecting a list of compnames all to the same source pair. The parameter name in all the comps must be the same as in the src pair. +function connect_all!(m::Model, comps::Vector{Symbol}, src::Pair{Symbol,Symbol}) src_comp, param = src for comp in comps - connect_param!(m, comp=>param, src_comp=>param) + connect_param!(m, comp => param, src_comp => param) end end @@ -51,7 +51,7 @@ function make_percentile_tables(output_dir, gas, discount_rates, perturbation_ye pcts = [.01, .05, .1, .25, .5, :avg, .75, .90, .95, .99] for dr in discount_rates, (idx, year) in enumerate(perturbation_years) - table = joinpath(tables, "$year SC-$gas Percentiles - $(dr*100)%.csv") + table = joinpath(tables, "$year SC-$gas Percentiles - $(dr * 100)%.csv") open(table, "w") do f write(f, "Scenario,1st,5th,10th,25th,50th,Avg,75th,90th,95th,99th\n") for fn in filter(x -> endswith(x, "$dr.csv"), results) # Get the results files for this discount rate @@ -61,7 +61,7 @@ function make_percentile_tables(output_dir, gas, discount_rates, perturbation_ye disc_idx = convert(Array{Bool}, readdlm(joinpath(disc_dir, fn), ',')[2:end, idx]) d = d[map(!, disc_idx)] end - filter!(x->!isnan(x), d) + filter!(x -> !isnan(x), d) values = [pct == :avg ? Int(round(mean(d))) : Int(round(quantile(d, pct))) for pct in pcts] write(f, "$scenario,", join(values, ","), "\n") end @@ -80,7 +80,7 @@ function make_stderror_tables(output_dir, gas, discount_rates, perturbation_year results = readdir(scc_dir) # all saved SCC output files for dr in discount_rates, (idx, year) in enumerate(perturbation_years) - table = joinpath(tables, "$year SC-$gas Std Errors - $(dr*100)%.csv") + table = joinpath(tables, "$year SC-$gas Std Errors - $(dr * 100)%.csv") open(table, "w") do f write(f, "Scenario,Mean,SE\n") for fn in filter(x -> endswith(x, "$dr.csv"), results) # Get the results files for this discount rate @@ -90,7 +90,7 @@ function make_stderror_tables(output_dir, gas, discount_rates, perturbation_year disc_idx = convert(Array{Bool}, readdlm(joinpath(disc_dir, fn), ',')[2:end, idx]) d = d[map(!, disc_idx)] end - filter!(x->!isnan(x), d) + filter!(x -> !isnan(x), d) write(f, "$scenario, $(round(mean(d), digits=2)), $(round(sem(d), digits=2)) \n") end end @@ -108,22 +108,22 @@ function make_summary_table(output_dir, gas, discount_rates, perturbation_years, results = readdir(scc_dir) # all saved SCC output files - data = Array{Any, 2}(undef, length(perturbation_years)+1, 2*length(discount_rates)+1) - data[1, :] = ["Year", ["$(r*100)% Average" for r in discount_rates]..., ["High Impact (95th Pct at $(r*100)%)" for r in discount_rates]...] + data = Array{Any,2}(undef, length(perturbation_years) + 1, 2 * length(discount_rates) + 1) + data[1, :] = ["Year", ["$(r * 100)% Average" for r in discount_rates]..., ["High Impact (95th Pct at $(r * 100)%)" for r in discount_rates]...] data[2:end, 1] = perturbation_years for (j, dr) in enumerate(discount_rates) - vals = Matrix{Union{Missing, Float64}}(undef, 0, length(perturbation_years)) + vals = Matrix{Union{Missing,Float64}}(undef, 0, length(perturbation_years)) for scenario in scenarios - curr_vals = convert(Array{Union{Missing, Float64}}, readdlm(joinpath(scc_dir, "$(string(scenario)) $dr.csv"), ',')[2:end, :]) + curr_vals = convert(Array{Union{Missing,Float64}}, readdlm(joinpath(scc_dir, "$(string(scenario)) $dr.csv"), ',')[2:end, :]) if drop_discontinuities disc_idx = convert(Array{Bool}, readdlm(joinpath(disc_dir, "$(string(scenario)) $dr.csv"), ',')[2:end, :]) curr_vals[disc_idx] .= missing end vals = vcat(vals, curr_vals) end - data[2:end, j+1] = mapslices(x -> mean(skipmissing(x)), vals, dims=1)[:] - data[2:end, j+1+length(discount_rates)] = [quantile(skipmissing(vals[2:end, y]), .95) for y in 1:length(perturbation_years)] + data[2:end, j + 1] = mapslices(x -> mean(skipmissing(x)), vals, dims=1)[:] + data[2:end, j + 1 + length(discount_rates)] = [quantile(skipmissing(vals[2:end, y]), .95) for y in 1:length(perturbation_years)] end table = joinpath(tables, "Summary Table.csv") diff --git a/src/montecarlo/FUND_mcs.jl b/src/montecarlo/FUND_mcs.jl index aba0030..0c8cdbc 100644 --- a/src/montecarlo/FUND_mcs.jl +++ b/src/montecarlo/FUND_mcs.jl @@ -23,103 +23,103 @@ function get_fund_mcs() ## that are shared due to old set_param! usage ## - scenariouncertainty.aceiadd = ["USA" => Normal(0.0,0.025), "CAN" => Normal(0.0,0.025), "WEU" => Normal(0.0,0.025), "JPK" => Normal(0.0,0.0375), "ANZ" => Normal(0.0,0.0375), "EEU" => Normal(0.0,0.025), "FSU" => Normal(0.0,0.025), "MDE" => Normal(0.0,0.0875), "CAM" => Normal(0.0,0.05625), "LAM" => Normal(0.0,0.05625), "SAS" => Normal(0.0,0.0875), "SEA" => Normal(0.0,0.0875), "CHI" => Normal(0.0,0.0375), "MAF" => Normal(0.0,0.11875), "SSA" => Normal(0.0,0.11875), "SIS" => Normal(0.0,0.05625)] - scenariouncertainty.aeeiadd = ["USA" => Normal(0.0,0.0625), "CAN" => Normal(0.0,0.0625), "WEU" => Normal(0.0,0.0625), "JPK" => Normal(0.0,0.0625), "ANZ" => Normal(0.0,0.0625), "EEU" => Normal(0.0,0.1), "FSU" => Normal(0.0,0.1), "MDE" => Normal(0.0,0.15), "CAM" => Normal(0.0,0.15), "LAM" => Normal(0.0,0.15), "SAS" => Normal(0.0,0.15), "SEA" => Normal(0.0,0.15), "CHI" => Normal(0.0,0.175), "MAF" => Normal(0.0,0.15), "SSA" => Normal(0.0,0.15), "SIS" => Normal(0.0,0.15)] - impactagriculture.agcbm = ["USA" => Truncated(Normal(0.089,0.1484), 0.0, Inf), "CAN" => Truncated(Normal(0.0402,0.065), 0.0, Inf), "WEU" => Truncated(Normal(0.1541,0.1183), 0.0, Inf), "JPK" => Truncated(Normal(0.2319,0.366), 0.0, Inf), "ANZ" => Truncated(Normal(0.1048,0.085), 0.0, Inf), "EEU" => Truncated(Normal(0.0952,0.0514), 0.0, Inf), "FSU" => Truncated(Normal(0.0671,0.0548), 0.0, Inf), "MDE" => Truncated(Normal(0.0943,0.0266), 0.0, Inf), "CAM" => Truncated(Normal(0.1641,0.0538), 0.0, Inf), "LAM" => Truncated(Normal(0.0596,0.0504), 0.0, Inf), "SAS" => Truncated(Normal(0.058,0.0164), 0.0, Inf), "SEA" => Truncated(Normal(0.0845,0.4181), 0.0, Inf), "CHI" => Truncated(Normal(0.1921,0.0613), 0.0, Inf), "MAF" => Truncated(Normal(0.0727,0.019), 0.0, Inf), "SSA" => Truncated(Normal(0.0505,0.022), 0.0, Inf), "SIS" => Truncated(Normal(0.2377,0.0864), 0.0, Inf)] - impactagriculture.agel = Truncated(Normal(0.31,0.15), 0.0, 1.0) - impactagriculture.aglparl = ["USA" => Truncated(Normal(0.0259810049019608,0.0213267435505035), 0.0, Inf), "CAN" => Truncated(Normal(0.0923560606060606,0.0800938684660319), 0.0, Inf), "WEU" => Truncated(Normal(0.021883487654321,0.00155285586012424), 0.0, Inf), "JPK" => Truncated(Normal(0.0462338709677419,0.0216697050990404), 0.0, Inf), "ANZ" => Truncated(Normal(0.0396465746205965,0.0707787669743405), 0.0, Inf), "EEU" => Truncated(Normal(0.0475721982758621,0.0973749246061888), 0.0, Inf), "FSU" => Truncated(Normal(0.0418566470712197,0.0751278509694302), 0.0, Inf), "MDE" => Truncated(Normal(0.0421993430741693,0.0705702013176662), 0.0, Inf), "CAM" => Truncated(Normal(0.0638352272727273,0.0428390811061973), 0.0, Inf), "LAM" => Truncated(Normal(0.003045,0.00495797624773007), 0.0, Inf), "SAS" => Truncated(Normal(0.025470079787234,0.0240282059284576), 0.0, Inf), "SEA" => Truncated(Normal(0.0135138888888889,0.00355503300856311), 0.0, Inf), "CHI" => Truncated(Normal(0.0430619429569277,0.0762567733933823), 0.0, Inf), "MAF" => Truncated(Normal(0.03346875,0.0426305042811185), 0.0, Inf), "SSA" => Truncated(Normal(0.0244802631578947,0.0340552582289858), 0.0, Inf), "SIS" => Truncated(Normal(0.0425735877466748,0.0769042893611385), 0.0, Inf)] - impactagriculture.aglparq = ["USA" => Truncated(Normal(-0.0119178921568627,0.0182356597477236), -Inf, 0.0), "CAN" => Truncated(Normal(-0.0158143939393939,0.00945384554959497), -Inf, 0.0), "WEU" => Truncated(Normal(-0.0138503086419753,0.013197508099606), -Inf, 0.0), "JPK" => Truncated(Normal(-0.0235887096774194,0.029940084414887), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.0155903909385135,0.0374712492013158), -Inf, 0.0), "EEU" => Truncated(Normal(-0.0181573275862069,0.0476884205159737), -Inf, 0.0), "FSU" => Truncated(Normal(-0.0163118735427424,0.0388313181355771), -Inf, 0.0), "MDE" => Truncated(Normal(-0.0165914930103618,0.0373495478918258), -Inf, 0.0), "CAM" => Truncated(Normal(-0.0303977272727273,0.0427671908556002), -Inf, 0.0), "LAM" => Truncated(Normal(-0.00435,0.00280772150262969), -Inf, 0.0), "SAS" => Truncated(Normal(-0.0112699468085106,0.018095882190896), -Inf, 0.0), "SEA" => Truncated(Normal(-0.00965277777777778,0.00843513605824223), -Inf, 0.0), "CHI" => Truncated(Normal(-0.0168265560310128,0.0396988494314158), -Inf, 0.0), "MAF" => Truncated(Normal(-0.0139453125,0.0265770062631446), -Inf, 0.0), "SSA" => Truncated(Normal(-0.0100328947368421,0.0201799487191507), -Inf, 0.0), "SIS" => Truncated(Normal(-0.0166147684550101,0.0399015737834891), -Inf, 0.0)] - impactagriculture.agnl = Truncated(Normal(2.0,0.5), 0.0, Inf) - impactagriculture.agrbm = ["USA" => Truncated(Normal(-0.00021,0.00176), -Inf, 0.0), "CAN" => Truncated(Normal(-0.00029,0.00073), -Inf, 0.0), "WEU" => Truncated(Normal(-0.00039,0.00138), -Inf, 0.0), "JPK" => Truncated(Normal(-0.00033,0.00432), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.00015,0.00142), -Inf, 0.0), "EEU" => Truncated(Normal(-0.00027,0.00062), -Inf, 0.0), "FSU" => Truncated(Normal(-0.00018,0.00066), -Inf, 0.0), "MDE" => Truncated(Normal(-0.00022,0.00032), -Inf, 0.0), "CAM" => Truncated(Normal(-0.00034,0.00061), -Inf, 0.0), "LAM" => Truncated(Normal(-9.0e-5,0.0006), -Inf, 0.0), "SAS" => Truncated(Normal(-0.00014,0.00021), -Inf, 0.0), "SEA" => Truncated(Normal(-9.0e-5,0.00482), -Inf, 0.0), "CHI" => Truncated(Normal(-0.00013,0.00075), -Inf, 0.0), "MAF" => Truncated(Normal(-0.00016,0.00023), -Inf, 0.0), "SSA" => Truncated(Normal(-0.00011,0.00026), -Inf, 0.0), "SIS" => Truncated(Normal(-0.0005,0.00103), -Inf, 0.0)] - impactagriculture.agtime = ["USA" => Truncated(Normal(10.0,5.0), 1.0, Inf), "CAN" => Truncated(Normal(10.0,5.0), 1.0, Inf), "WEU" => Truncated(Normal(10.0,5.0), 1.0, Inf), "JPK" => Truncated(Normal(10.0,5.0), 1.0, Inf), "ANZ" => Truncated(Normal(10.0,5.0), 1.0, Inf), "EEU" => Truncated(Normal(10.0,5.0), 1.0, Inf), "FSU" => Truncated(Normal(10.0,5.0), 1.0, Inf), "MDE" => Truncated(Normal(10.0,5.0), 1.0, Inf), "CAM" => Truncated(Normal(10.0,5.0), 1.0, Inf), "LAM" => Truncated(Normal(10.0,5.0), 1.0, Inf), "SAS" => Truncated(Normal(10.0,5.0), 1.0, Inf), "SEA" => Truncated(Normal(10.0,5.0), 1.0, Inf), "CHI" => Truncated(Normal(10.0,5.0), 1.0, Inf), "MAF" => Truncated(Normal(10.0,5.0), 1.0, Inf), "SSA" => Truncated(Normal(10.0,5.0), 1.0, Inf), "SIS" => Truncated(Normal(10.0,5.0), 1.0, Inf)] - biodiversity.bioloss = Truncated(Normal(0.003,0.002), 0.0, Inf) - biodiversity.biosens = Truncated(Normal(0.001,0.001), 0.0, Inf) + scenariouncertainty.aceiadd = ["USA" => Normal(0.0, 0.025), "CAN" => Normal(0.0, 0.025), "WEU" => Normal(0.0, 0.025), "JPK" => Normal(0.0, 0.0375), "ANZ" => Normal(0.0, 0.0375), "EEU" => Normal(0.0, 0.025), "FSU" => Normal(0.0, 0.025), "MDE" => Normal(0.0, 0.0875), "CAM" => Normal(0.0, 0.05625), "LAM" => Normal(0.0, 0.05625), "SAS" => Normal(0.0, 0.0875), "SEA" => Normal(0.0, 0.0875), "CHI" => Normal(0.0, 0.0375), "MAF" => Normal(0.0, 0.11875), "SSA" => Normal(0.0, 0.11875), "SIS" => Normal(0.0, 0.05625)] + scenariouncertainty.aeeiadd = ["USA" => Normal(0.0, 0.0625), "CAN" => Normal(0.0, 0.0625), "WEU" => Normal(0.0, 0.0625), "JPK" => Normal(0.0, 0.0625), "ANZ" => Normal(0.0, 0.0625), "EEU" => Normal(0.0, 0.1), "FSU" => Normal(0.0, 0.1), "MDE" => Normal(0.0, 0.15), "CAM" => Normal(0.0, 0.15), "LAM" => Normal(0.0, 0.15), "SAS" => Normal(0.0, 0.15), "SEA" => Normal(0.0, 0.15), "CHI" => Normal(0.0, 0.175), "MAF" => Normal(0.0, 0.15), "SSA" => Normal(0.0, 0.15), "SIS" => Normal(0.0, 0.15)] + impactagriculture.agcbm = ["USA" => Truncated(Normal(0.089, 0.1484), 0.0, Inf), "CAN" => Truncated(Normal(0.0402, 0.065), 0.0, Inf), "WEU" => Truncated(Normal(0.1541, 0.1183), 0.0, Inf), "JPK" => Truncated(Normal(0.2319, 0.366), 0.0, Inf), "ANZ" => Truncated(Normal(0.1048, 0.085), 0.0, Inf), "EEU" => Truncated(Normal(0.0952, 0.0514), 0.0, Inf), "FSU" => Truncated(Normal(0.0671, 0.0548), 0.0, Inf), "MDE" => Truncated(Normal(0.0943, 0.0266), 0.0, Inf), "CAM" => Truncated(Normal(0.1641, 0.0538), 0.0, Inf), "LAM" => Truncated(Normal(0.0596, 0.0504), 0.0, Inf), "SAS" => Truncated(Normal(0.058, 0.0164), 0.0, Inf), "SEA" => Truncated(Normal(0.0845, 0.4181), 0.0, Inf), "CHI" => Truncated(Normal(0.1921, 0.0613), 0.0, Inf), "MAF" => Truncated(Normal(0.0727, 0.019), 0.0, Inf), "SSA" => Truncated(Normal(0.0505, 0.022), 0.0, Inf), "SIS" => Truncated(Normal(0.2377, 0.0864), 0.0, Inf)] + impactagriculture.agel = Truncated(Normal(0.31, 0.15), 0.0, 1.0) + impactagriculture.aglparl = ["USA" => Truncated(Normal(0.0259810049019608, 0.0213267435505035), 0.0, Inf), "CAN" => Truncated(Normal(0.0923560606060606, 0.0800938684660319), 0.0, Inf), "WEU" => Truncated(Normal(0.021883487654321, 0.00155285586012424), 0.0, Inf), "JPK" => Truncated(Normal(0.0462338709677419, 0.0216697050990404), 0.0, Inf), "ANZ" => Truncated(Normal(0.0396465746205965, 0.0707787669743405), 0.0, Inf), "EEU" => Truncated(Normal(0.0475721982758621, 0.0973749246061888), 0.0, Inf), "FSU" => Truncated(Normal(0.0418566470712197, 0.0751278509694302), 0.0, Inf), "MDE" => Truncated(Normal(0.0421993430741693, 0.0705702013176662), 0.0, Inf), "CAM" => Truncated(Normal(0.0638352272727273, 0.0428390811061973), 0.0, Inf), "LAM" => Truncated(Normal(0.003045, 0.00495797624773007), 0.0, Inf), "SAS" => Truncated(Normal(0.025470079787234, 0.0240282059284576), 0.0, Inf), "SEA" => Truncated(Normal(0.0135138888888889, 0.00355503300856311), 0.0, Inf), "CHI" => Truncated(Normal(0.0430619429569277, 0.0762567733933823), 0.0, Inf), "MAF" => Truncated(Normal(0.03346875, 0.0426305042811185), 0.0, Inf), "SSA" => Truncated(Normal(0.0244802631578947, 0.0340552582289858), 0.0, Inf), "SIS" => Truncated(Normal(0.0425735877466748, 0.0769042893611385), 0.0, Inf)] + impactagriculture.aglparq = ["USA" => Truncated(Normal(-0.0119178921568627, 0.0182356597477236), -Inf, 0.0), "CAN" => Truncated(Normal(-0.0158143939393939, 0.00945384554959497), -Inf, 0.0), "WEU" => Truncated(Normal(-0.0138503086419753, 0.013197508099606), -Inf, 0.0), "JPK" => Truncated(Normal(-0.0235887096774194, 0.029940084414887), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.0155903909385135, 0.0374712492013158), -Inf, 0.0), "EEU" => Truncated(Normal(-0.0181573275862069, 0.0476884205159737), -Inf, 0.0), "FSU" => Truncated(Normal(-0.0163118735427424, 0.0388313181355771), -Inf, 0.0), "MDE" => Truncated(Normal(-0.0165914930103618, 0.0373495478918258), -Inf, 0.0), "CAM" => Truncated(Normal(-0.0303977272727273, 0.0427671908556002), -Inf, 0.0), "LAM" => Truncated(Normal(-0.00435, 0.00280772150262969), -Inf, 0.0), "SAS" => Truncated(Normal(-0.0112699468085106, 0.018095882190896), -Inf, 0.0), "SEA" => Truncated(Normal(-0.00965277777777778, 0.00843513605824223), -Inf, 0.0), "CHI" => Truncated(Normal(-0.0168265560310128, 0.0396988494314158), -Inf, 0.0), "MAF" => Truncated(Normal(-0.0139453125, 0.0265770062631446), -Inf, 0.0), "SSA" => Truncated(Normal(-0.0100328947368421, 0.0201799487191507), -Inf, 0.0), "SIS" => Truncated(Normal(-0.0166147684550101, 0.0399015737834891), -Inf, 0.0)] + impactagriculture.agnl = Truncated(Normal(2.0, 0.5), 0.0, Inf) + impactagriculture.agrbm = ["USA" => Truncated(Normal(-0.00021, 0.00176), -Inf, 0.0), "CAN" => Truncated(Normal(-0.00029, 0.00073), -Inf, 0.0), "WEU" => Truncated(Normal(-0.00039, 0.00138), -Inf, 0.0), "JPK" => Truncated(Normal(-0.00033, 0.00432), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.00015, 0.00142), -Inf, 0.0), "EEU" => Truncated(Normal(-0.00027, 0.00062), -Inf, 0.0), "FSU" => Truncated(Normal(-0.00018, 0.00066), -Inf, 0.0), "MDE" => Truncated(Normal(-0.00022, 0.00032), -Inf, 0.0), "CAM" => Truncated(Normal(-0.00034, 0.00061), -Inf, 0.0), "LAM" => Truncated(Normal(-9.0e-5, 0.0006), -Inf, 0.0), "SAS" => Truncated(Normal(-0.00014, 0.00021), -Inf, 0.0), "SEA" => Truncated(Normal(-9.0e-5, 0.00482), -Inf, 0.0), "CHI" => Truncated(Normal(-0.00013, 0.00075), -Inf, 0.0), "MAF" => Truncated(Normal(-0.00016, 0.00023), -Inf, 0.0), "SSA" => Truncated(Normal(-0.00011, 0.00026), -Inf, 0.0), "SIS" => Truncated(Normal(-0.0005, 0.00103), -Inf, 0.0)] + impactagriculture.agtime = ["USA" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "CAN" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "WEU" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "JPK" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "ANZ" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "EEU" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "FSU" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "MDE" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "CAM" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "LAM" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "SAS" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "SEA" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "CHI" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "MAF" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "SSA" => Truncated(Normal(10.0, 5.0), 1.0, Inf), "SIS" => Truncated(Normal(10.0, 5.0), 1.0, Inf)] + biodiversity.bioloss = Truncated(Normal(0.003, 0.002), 0.0, Inf) + biodiversity.biosens = Truncated(Normal(0.001, 0.001), 0.0, Inf) impactbiodiversity.bioshare = TriangularDist(0.0, 1.0, 0.05) - impactcardiovascularrespiratory.ccmlbm = ["USA" => Truncated(Normal(151.6768,3.4583), 0.0, Inf), "CAN" => Truncated(Normal(195.6424,3.4583), 0.0, Inf), "WEU" => Truncated(Normal(19.2327,1.2716), 0.0, Inf), "JPK" => Truncated(Normal(65.5934,3.5211), 0.0, Inf), "ANZ" => Truncated(Normal(67.1775,2.9403), 0.0, Inf), "EEU" => Truncated(Normal(61.484,1.5395), 0.0, Inf), "FSU" => Truncated(Normal(-3.4422,3.4583), -Inf, 0.0), "MDE" => Truncated(Normal(-2.4508,1.5732), -Inf, 0.0), "CAM" => Truncated(Normal(-0.6855,2.6117), -Inf, 0.0), "LAM" => Truncated(Normal(16.6942,1.8829), 0.0, Inf), "SAS" => Truncated(Normal(-1.6072,2.6242), -Inf, 0.0), "SEA" => Truncated(Normal(-0.6838,1.4722), -Inf, 0.0), "CHI" => Truncated(Normal(81.1077,3.4522), 0.0, Inf), "MAF" => Truncated(Normal(-1.9826,1.9196), -Inf, 0.0), "SSA" => Truncated(Normal(-1.0407,0.9609), -Inf, 0.0), "SIS" => Truncated(Normal(1.6035,1.1897), 0.0, Inf)] - impactcardiovascularrespiratory.ccmqbm = ["USA" => Truncated(Normal(-155.1251,2.8292), -Inf, 0.0), "CAN" => Truncated(Normal(-199.0906,2.8292), -Inf, 0.0), "WEU" => Truncated(Normal(-21.7191,1.0403), -Inf, 0.0), "JPK" => Truncated(Normal(-67.185,2.8805), -Inf, 0.0), "ANZ" => Truncated(Normal(-68.9576,2.4054), -Inf, 0.0), "EEU" => Truncated(Normal(-65.2217,1.2594), -Inf, 0.0), "FSU" => Truncated(Normal(0.0473,2.8292), 0.0, Inf), "MDE" => Truncated(Normal(0.0457,1.287), 0.0, Inf), "CAM" => Truncated(Normal(-0.484,2.1366), -Inf, 0.0), "LAM" => Truncated(Normal(-18.2021,1.5404), -Inf, 0.0), "SAS" => Truncated(Normal(0.0473,2.1468), 0.0, Inf), "SEA" => Truncated(Normal(0.0413,1.2044), 0.0, Inf), "CHI" => Truncated(Normal(-84.8815,2.8242), -Inf, 0.0), "MAF" => Truncated(Normal(0.0473,1.5704), 0.0, Inf), "SSA" => Truncated(Normal(0.0448,0.7861), 0.0, Inf), "SIS" => Truncated(Normal(-2.3428,0.9733), -Inf, 0.0)] - impactcardiovascularrespiratory.ccplbm = ["USA" => Truncated(Normal(-161.4521,62.3397), -Inf, 0.0), "CAN" => Truncated(Normal(-205.4176,62.3397), -Inf, 0.0), "WEU" => Truncated(Normal(-145.9539,23.8362), -Inf, 0.0), "JPK" => Truncated(Normal(-33.683,24.9641), -Inf, 0.0), "ANZ" => Truncated(Normal(-91.0606,53.2451), -Inf, 0.0), "EEU" => Truncated(Normal(-201.8789,27.0842), -Inf, 0.0), "FSU" => Truncated(Normal(-190.3936,62.3397), -Inf, 0.0), "MDE" => Truncated(Normal(-136.8033,30.2768), -Inf, 0.0), "CAM" => Truncated(Normal(-54.1635,45.5739), -Inf, 0.0), "LAM" => Truncated(Normal(-78.4126,32.7397), -Inf, 0.0), "SAS" => Truncated(Normal(-80.232,51.2055), -Inf, 0.0), "SEA" => Truncated(Normal(12.0899,12.0535), 0.0, Inf), "CHI" => Truncated(Normal(-66.6796,43.8249), -Inf, 0.0), "MAF" => Truncated(Normal(-102.4339,35.4522), -Inf, 0.0), "SSA" => Truncated(Normal(-49.97,16.5999), -Inf, 0.0), "SIS" => Truncated(Normal(-10.4503,7.4943), -Inf, 0.0)] - impactcardiovascularrespiratory.ccpqbm = ["USA" => Truncated(Normal(2.8314,62.308), 0.0, Inf), "CAN" => Truncated(Normal(2.8314,62.308), 0.0, Inf), "WEU" => Truncated(Normal(2.8279,23.8241), 0.0, Inf), "JPK" => Truncated(Normal(1.2018,24.9514), 0.0, Inf), "ANZ" => Truncated(Normal(2.8314,53.218), 0.0, Inf), "EEU" => Truncated(Normal(2.8314,27.0704), 0.0, Inf), "FSU" => Truncated(Normal(2.8314,62.308), 0.0, Inf), "MDE" => Truncated(Normal(2.7443,30.2614), 0.0, Inf), "CAM" => Truncated(Normal(2.7085,45.5507), 0.0, Inf), "LAM" => Truncated(Normal(2.8094,32.723), 0.0, Inf), "SAS" => Truncated(Normal(2.8314,51.1794), 0.0, Inf), "SEA" => Truncated(Normal(-1.1081,12.0474), -Inf, 0.0), "CHI" => Truncated(Normal(2.0193,43.8025), 0.0, Inf), "MAF" => Truncated(Normal(2.8314,35.4341), 0.0, Inf), "SSA" => Truncated(Normal(2.6771,16.5915), 0.0, Inf), "SIS" => Truncated(Normal(0.5138,7.4905), 0.0, Inf)] - impactcooling.cebm = ["USA" => Truncated(Normal(-0.00212,0.00212), -Inf, 0.0), "CAN" => Truncated(Normal(-0.00186,0.00186), -Inf, 0.0), "WEU" => Truncated(Normal(-0.00372,0.00372), -Inf, 0.0), "JPK" => Truncated(Normal(-0.00029,0.00029), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.00021,0.00021), -Inf, 0.0), "EEU" => Truncated(Normal(-0.00185,0.00185), -Inf, 0.0), "FSU" => Truncated(Normal(-0.00674,0.00674), -Inf, 0.0), "MDE" => Truncated(Normal(-0.00233,0.00233), -Inf, 0.0), "CAM" => Truncated(Normal(-0.00239,0.00239), -Inf, 0.0), "LAM" => Truncated(Normal(-0.00259,0.00259), -Inf, 0.0), "SAS" => Truncated(Normal(-0.00384,0.00384), -Inf, 0.0), "SEA" => Truncated(Normal(-0.0074,0.0074), -Inf, 0.0), "CHI" => Truncated(Normal(-0.02891,0.02891), -Inf, 0.0), "MAF" => Truncated(Normal(-0.01892,0.01892), -Inf, 0.0), "SSA" => Truncated(Normal(-0.00797,0.00797), -Inf, 0.0), "SIS" => Truncated(Normal(-0.00239,0.00239), -Inf, 0.0)] - impactcooling.ceel = Truncated(Normal(0.8,0.2), 0.0, 1.0) - impactcooling.cenl = Truncated(Normal(1.5,0.5), 0.0, Inf) - emissions.ch4add = Normal(0.0,6.8346) - impactcardiovascularrespiratory.chmlbm = ["USA" => Truncated(Normal(1.0988,1.0738), 0.0, Inf), "CAN" => Truncated(Normal(1.0705,1.0738), 0.0, Inf), "WEU" => Truncated(Normal(0.4022,0.4226), 0.0, Inf), "JPK" => Truncated(Normal(1.0356,1.1234), 0.0, Inf), "ANZ" => Truncated(Normal(0.4493,0.9147), 0.0, Inf), "EEU" => Truncated(Normal(0.6119,0.4767), 0.0, Inf), "FSU" => Truncated(Normal(0.6468,1.0738), 0.0, Inf), "MDE" => Truncated(Normal(1.0931,0.4791), 0.0, Inf), "CAM" => Truncated(Normal(0.9144,0.8887), 0.0, Inf), "LAM" => Truncated(Normal(0.5893,0.5874), 0.0, Inf), "SAS" => Truncated(Normal(1.6317,0.8373), 0.0, Inf), "SEA" => Truncated(Normal(0.8545,0.4641), 0.0, Inf), "CHI" => Truncated(Normal(0.7565,1.0335), 0.0, Inf), "MAF" => Truncated(Normal(1.0409,0.5662), 0.0, Inf), "SSA" => Truncated(Normal(0.8682,0.3408), 0.0, Inf), "SIS" => Truncated(Normal(1.0227,0.4957), 0.0, Inf)] - impactcardiovascularrespiratory.chmqbm = ["USA" => Truncated(Normal(0.0471,0.8815), 0.0, Inf), "CAN" => Truncated(Normal(0.0471,0.8815), 0.0, Inf), "WEU" => Truncated(Normal(0.0467,0.3469), 0.0, Inf), "JPK" => Truncated(Normal(0.0559,0.9223), 0.0, Inf), "ANZ" => Truncated(Normal(0.047,0.7509), 0.0, Inf), "EEU" => Truncated(Normal(0.047,0.3914), 0.0, Inf), "FSU" => Truncated(Normal(0.0471,0.8815), 0.0, Inf), "MDE" => Truncated(Normal(0.0452,0.3933), 0.0, Inf), "CAM" => Truncated(Normal(0.0471,0.7296), 0.0, Inf), "LAM" => Truncated(Normal(0.047,0.4823), 0.0, Inf), "SAS" => Truncated(Normal(0.047,0.6874), 0.0, Inf), "SEA" => Truncated(Normal(0.0411,0.381), 0.0, Inf), "CHI" => Truncated(Normal(0.0474,0.8485), 0.0, Inf), "MAF" => Truncated(Normal(0.0471,0.4648), 0.0, Inf), "SSA" => Truncated(Normal(0.044,0.2798), 0.0, Inf), "SIS" => Truncated(Normal(0.0324,0.407), 0.0, Inf)] - impactcardiovascularrespiratory.chplbm = ["USA" => Truncated(Normal(34.9374,42.9155), 0.0, Inf), "CAN" => Truncated(Normal(27.328,42.9155), 0.0, Inf), "WEU" => Truncated(Normal(25.757,17.8447), 0.0, Inf), "JPK" => Truncated(Normal(8.2986,17.7713), 0.0, Inf), "ANZ" => Truncated(Normal(18.8372,36.7267), 0.0, Inf), "EEU" => Truncated(Normal(29.6249,18.8672), 0.0, Inf), "FSU" => Truncated(Normal(36.4415,42.9155), 0.0, Inf), "MDE" => Truncated(Normal(50.5493,20.6547), 0.0, Inf), "CAM" => Truncated(Normal(44.7697,34.4286), 0.0, Inf), "LAM" => Truncated(Normal(33.7621,23.0347), 0.0, Inf), "SAS" => Truncated(Normal(74.5092,36.2131), 0.0, Inf), "SEA" => Truncated(Normal(-18.7223,8.1867), -Inf, 0.0), "CHI" => Truncated(Normal(82.0355,29.0776), 0.0, Inf), "MAF" => Truncated(Normal(50.4842,23.0206), 0.0, Inf), "SSA" => Truncated(Normal(43.4397,13.5145), 0.0, Inf), "SIS" => Truncated(Normal(16.9938,8.0489), 0.0, Inf)] - impactcardiovascularrespiratory.chpqbm = ["USA" => Truncated(Normal(1.7285,35.2319), 0.0, Inf), "CAN" => Truncated(Normal(1.7285,35.2319), 0.0, Inf), "WEU" => Truncated(Normal(1.7966,14.6498), 0.0, Inf), "JPK" => Truncated(Normal(0.7493,14.5895), 0.0, Inf), "ANZ" => Truncated(Normal(1.7286,30.1512), 0.0, Inf), "EEU" => Truncated(Normal(1.7531,15.4893), 0.0, Inf), "FSU" => Truncated(Normal(1.7285,35.2319), 0.0, Inf), "MDE" => Truncated(Normal(1.7011,16.9568), 0.0, Inf), "CAM" => Truncated(Normal(1.662,28.2646), 0.0, Inf), "LAM" => Truncated(Normal(1.7535,18.9106), 0.0, Inf), "SAS" => Truncated(Normal(1.7378,29.7296), 0.0, Inf), "SEA" => Truncated(Normal(-0.6683,6.721), -Inf, 0.0), "CHI" => Truncated(Normal(1.2095,23.8716), 0.0, Inf), "MAF" => Truncated(Normal(1.7096,18.8991), 0.0, Inf), "SSA" => Truncated(Normal(1.6578,11.0949), 0.0, Inf), "SIS" => Truncated(Normal(0.4223,6.6079), 0.0, Inf)] - impactcardiovascularrespiratory.cvlin = Truncated(Normal(0.025901,0.009574), 0.0, Inf) - impactvectorbornediseases.dfch = ["USA" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "CAN" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "WEU" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "JPK" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "ANZ" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "EEU" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "FSU" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "MDE" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "CAM" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "LAM" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "SAS" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "SEA" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "CHI" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "MAF" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "SSA" => Truncated(Normal(0.3534,0.0614), 0.0, Inf), "SIS" => Truncated(Normal(0.3534,0.0614), 0.0, Inf)] - impactvectorbornediseases.dfnl = Truncated(Normal(1.0,0.5), 0.0, Inf) - impactdiarrhoea.diamortel = Truncated(Normal(-1.578625,0.232507), -Inf, 0.0) - impactdiarrhoea.diamortnl = Truncated(Normal(1.141714,0.508302), 0.0, Inf) - impactdiarrhoea.diayldel = Truncated(Normal(-0.418406,0.119223), -1.0, 0.0) - impactdiarrhoea.diayldnl = Truncated(Normal(0.699241,0.260643), 0.0, Inf) - impactsealevelrise.dlbm = ["USA" => Truncated(Normal(20000.0,10000.0), 0.0, Inf), "CAN" => Truncated(Normal(970.0,970.0), 0.0, Inf), "WEU" => Truncated(Normal(4212.0,1273.0), 0.0, Inf), "JPK" => Truncated(Normal(2687.0,1213.0), 0.0, Inf), "ANZ" => Truncated(Normal(3135.0,2920.0), 0.0, Inf), "EEU" => Truncated(Normal(1889.0,860.0), 0.0, Inf), "FSU" => Truncated(Normal(15138.0,15138.0), 0.0, Inf), "MDE" => Truncated(Normal(1621.0,1025.0), 0.0, Inf), "CAM" => Truncated(Normal(12004.0,8033.0), 0.0, Inf), "LAM" => Truncated(Normal(29407.0,11847.0), 0.0, Inf), "SAS" => Truncated(Normal(81275.0,49361.0), 0.0, Inf), "SEA" => Truncated(Normal(157286.0,90170.0), 0.0, Inf), "CHI" => Truncated(Normal(35000.0,17500.0), 0.0, Inf), "MAF" => Truncated(Normal(8354.0,3478.0), 0.0, Inf), "SSA" => Truncated(Normal(126602.0,63820.0), 0.0, Inf), "SIS" => Truncated(Normal(1505.0,628.0), 0.0, Inf)] - impactsealevelrise.drylandlossparam = ["USA" => Truncated(Normal(0.583433160330257,0.0310749451958314), 0.0, 1.0), "CAN" => Truncated(Normal(0.260515053189669,0.0137582984542109), 0.0, 1.0), "WEU" => Truncated(Normal(0.273314149409615,0.0146688810943221), 0.0, 1.0), "JPK" => Truncated(Normal(0.412066944374299,0.0268279386449215), 0.0, 1.0), "ANZ" => Truncated(Normal(0.548496484507909,0.0353090095289534), 0.0, 1.0), "EEU" => Truncated(Normal(0.193491238230705,0.0120297038764903), 0.0, 1.0), "FSU" => Truncated(Normal(0.555487676094765,0.0344126167165359), 0.0, 1.0), "MDE" => Truncated(Normal(0.628422279667412,0.00914652560895185), 0.0, 1.0), "CAM" => Truncated(Normal(0.678302864355753,0.0264748504908147), 0.0, 1.0), "LAM" => Truncated(Normal(0.756134247750368,0.0200692929944761), 0.0, 1.0), "SAS" => Truncated(Normal(0.929957316565567,0.0241559579142168), 0.0, 1.0), "SEA" => Truncated(Normal(0.81223935947527,0.0429547897395688), 0.0, 1.0), "CHI" => Truncated(Normal(0.707719142022655,0.0243920096916722), 0.0, 1.0), "MAF" => Truncated(Normal(0.336949623686827,0.0195350728174195), 0.0, 1.0), "SSA" => Truncated(Normal(0.798533208857799,0.0442837491243777), 0.0, 1.0), "SIS" => Truncated(Normal(0.667255915065629,0.0408474363982656), 0.0, 1.0)] - impactsealevelrise.dvbm = Truncated(Normal(0.004,0.002), 0.0, Inf) - impactsealevelrise.dvydl = Truncated(Normal(1.0,0.25), 0.0, Inf) - scenariouncertainty.ecgradd = ["USA" => Truncated(Normal(0.0,0.28), -0.645266515499562, 1.35473348450044), "CAN" => Truncated(Normal(0.0,0.28), -0.645266515499562, 1.35473348450044), "WEU" => Truncated(Normal(0.0,0.2775), -0.645129685612399, 1.3548703143876), "JPK" => Truncated(Normal(0.0,0.2825), -0.645237785006474, 1.35476221499353), "ANZ" => Truncated(Normal(0.0,0.2825), -0.645237785006474, 1.35476221499353), "EEU" => Truncated(Normal(0.0,0.4825), -0.702791192885658, 1.29720880711434), "FSU" => Truncated(Normal(0.0,0.4825), -0.702791192885658, 1.29720880711434), "MDE" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "CAM" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "LAM" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "SAS" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "SEA" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "CHI" => Truncated(Normal(0.0,0.7125), -0.761043730670382, 1.23895626932962), "MAF" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "SSA" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122), "SIS" => Truncated(Normal(0.0,0.65), -0.751960508718775, 1.24803949128122)] - impactsealevelrise.emcst = Truncated(Normal(3.0,1.5), 0.0, Inf) - impactextratropicalstorms.extratropicalstormsdamel = Truncated(Normal(-0.514,0.027), -1.0, 0.0) - impactextratropicalstorms.extratropicalstormsdeadel = Truncated(Normal(-0.501,0.051), -1.0, 0.0) - impactforests.forbm = ["USA" => Normal(5.325e-5,1.422e-5), "CAN" => Normal(1.123e-5,7.152e-5), "WEU" => Normal(2.528e-5,5.7e-6), "JPK" => Normal(4.173e-5,1.235e-5), "ANZ" => Normal(-0.0001211,3.255e-5), "EEU" => Normal(5.462e-5,2.472e-5), "FSU" => Normal(-2.348e-5,5.312e-5), "MDE" => Normal(0.0,3.386e-5), "CAM" => Normal(1.806e-5,3.429e-5), "LAM" => Normal(2.411e-5,1.195e-5), "SAS" => Normal(6.237e-5,2.294e-5), "SEA" => Normal(6.674e-5,2.772e-5), "CHI" => Normal(8.723e-5,3.22e-5), "MAF" => Normal(0.0,3.386e-5), "SSA" => Normal(1.141e-5,3.459e-5), "SIS" => Normal(0.0,3.386e-5)] - impactforests.forco2 = Truncated(Normal(2.2972,1.1486), 0.0, Inf) - impactforests.forel = Truncated(Normal(-0.31,0.2), -1.0, 0.0) - scenariouncertainty.foremadd = ["USA" => Normal(0.0,0.2025), "CAN" => Normal(0.0,0.2025), "CAM" => Normal(0.0,3.185), "LAM" => Normal(0.0,28.66), "SAS" => Normal(0.0,4.0375), "SEA" => Normal(0.0,12.1125), "CHI" => Normal(0.0,1.2675), "SSA" => Normal(0.0,11.76)] - impactforests.fornl = Truncated(Normal(1.0,0.5), 0.0, Inf) - impactheating.hebm = ["USA" => Truncated(Normal(0.00429,0.00429), 0.0, Inf), "CAN" => Truncated(Normal(0.00378,0.00378), 0.0, Inf), "WEU" => Truncated(Normal(0.00241,0.00241), 0.0, Inf), "JPK" => Truncated(Normal(0.00207,0.00207), 0.0, Inf), "ANZ" => Truncated(Normal(0.00151,0.00151), 0.0, Inf), "EEU" => Truncated(Normal(0.00456,0.00456), 0.0, Inf), "FSU" => Truncated(Normal(0.01663,0.01663), 0.0, Inf), "MDE" => Truncated(Normal(0.02074,0.02074), 0.0, Inf), "CAM" => Truncated(Normal(0.00366,0.00366), 0.0, Inf), "LAM" => Truncated(Normal(0.00395,0.00395), 0.0, Inf), "SAS" => Truncated(Normal(0.00361,0.00361), 0.0, Inf), "SEA" => Truncated(Normal(0.00695,0.00695), 0.0, Inf), "CHI" => Truncated(Normal(0.03971,0.03971), 0.0, Inf), "MAF" => Truncated(Normal(0.00015,0.00015), 0.0, Inf), "SSA" => Truncated(Normal(6.0e-5,6.0e-5), 0.0, Inf), "SIS" => Truncated(Normal(0.00366,0.00366), 0.0, Inf)] - impactheating.heel = Truncated(Normal(0.8,0.1), 0.0, 1.0) - impactheating.henl = Truncated(Normal(0.5,0.5), 0.0, Inf) - impacttropicalstorms.hurrdamel = Truncated(Normal(-0.514,0.027), -1.0, 0.0) - impacttropicalstorms.hurrdeadel = Truncated(Normal(-0.501,0.051), -1.0, 0.0) - impacttropicalstorms.hurrpar = Normal(0.04,0.005) - impactsealevelrise.immcst = Truncated(Normal(0.4,0.2), 0.0, Inf) + impactcardiovascularrespiratory.ccmlbm = ["USA" => Truncated(Normal(151.6768, 3.4583), 0.0, Inf), "CAN" => Truncated(Normal(195.6424, 3.4583), 0.0, Inf), "WEU" => Truncated(Normal(19.2327, 1.2716), 0.0, Inf), "JPK" => Truncated(Normal(65.5934, 3.5211), 0.0, Inf), "ANZ" => Truncated(Normal(67.1775, 2.9403), 0.0, Inf), "EEU" => Truncated(Normal(61.484, 1.5395), 0.0, Inf), "FSU" => Truncated(Normal(-3.4422, 3.4583), -Inf, 0.0), "MDE" => Truncated(Normal(-2.4508, 1.5732), -Inf, 0.0), "CAM" => Truncated(Normal(-0.6855, 2.6117), -Inf, 0.0), "LAM" => Truncated(Normal(16.6942, 1.8829), 0.0, Inf), "SAS" => Truncated(Normal(-1.6072, 2.6242), -Inf, 0.0), "SEA" => Truncated(Normal(-0.6838, 1.4722), -Inf, 0.0), "CHI" => Truncated(Normal(81.1077, 3.4522), 0.0, Inf), "MAF" => Truncated(Normal(-1.9826, 1.9196), -Inf, 0.0), "SSA" => Truncated(Normal(-1.0407, 0.9609), -Inf, 0.0), "SIS" => Truncated(Normal(1.6035, 1.1897), 0.0, Inf)] + impactcardiovascularrespiratory.ccmqbm = ["USA" => Truncated(Normal(-155.1251, 2.8292), -Inf, 0.0), "CAN" => Truncated(Normal(-199.0906, 2.8292), -Inf, 0.0), "WEU" => Truncated(Normal(-21.7191, 1.0403), -Inf, 0.0), "JPK" => Truncated(Normal(-67.185, 2.8805), -Inf, 0.0), "ANZ" => Truncated(Normal(-68.9576, 2.4054), -Inf, 0.0), "EEU" => Truncated(Normal(-65.2217, 1.2594), -Inf, 0.0), "FSU" => Truncated(Normal(0.0473, 2.8292), 0.0, Inf), "MDE" => Truncated(Normal(0.0457, 1.287), 0.0, Inf), "CAM" => Truncated(Normal(-0.484, 2.1366), -Inf, 0.0), "LAM" => Truncated(Normal(-18.2021, 1.5404), -Inf, 0.0), "SAS" => Truncated(Normal(0.0473, 2.1468), 0.0, Inf), "SEA" => Truncated(Normal(0.0413, 1.2044), 0.0, Inf), "CHI" => Truncated(Normal(-84.8815, 2.8242), -Inf, 0.0), "MAF" => Truncated(Normal(0.0473, 1.5704), 0.0, Inf), "SSA" => Truncated(Normal(0.0448, 0.7861), 0.0, Inf), "SIS" => Truncated(Normal(-2.3428, 0.9733), -Inf, 0.0)] + impactcardiovascularrespiratory.ccplbm = ["USA" => Truncated(Normal(-161.4521, 62.3397), -Inf, 0.0), "CAN" => Truncated(Normal(-205.4176, 62.3397), -Inf, 0.0), "WEU" => Truncated(Normal(-145.9539, 23.8362), -Inf, 0.0), "JPK" => Truncated(Normal(-33.683, 24.9641), -Inf, 0.0), "ANZ" => Truncated(Normal(-91.0606, 53.2451), -Inf, 0.0), "EEU" => Truncated(Normal(-201.8789, 27.0842), -Inf, 0.0), "FSU" => Truncated(Normal(-190.3936, 62.3397), -Inf, 0.0), "MDE" => Truncated(Normal(-136.8033, 30.2768), -Inf, 0.0), "CAM" => Truncated(Normal(-54.1635, 45.5739), -Inf, 0.0), "LAM" => Truncated(Normal(-78.4126, 32.7397), -Inf, 0.0), "SAS" => Truncated(Normal(-80.232, 51.2055), -Inf, 0.0), "SEA" => Truncated(Normal(12.0899, 12.0535), 0.0, Inf), "CHI" => Truncated(Normal(-66.6796, 43.8249), -Inf, 0.0), "MAF" => Truncated(Normal(-102.4339, 35.4522), -Inf, 0.0), "SSA" => Truncated(Normal(-49.97, 16.5999), -Inf, 0.0), "SIS" => Truncated(Normal(-10.4503, 7.4943), -Inf, 0.0)] + impactcardiovascularrespiratory.ccpqbm = ["USA" => Truncated(Normal(2.8314, 62.308), 0.0, Inf), "CAN" => Truncated(Normal(2.8314, 62.308), 0.0, Inf), "WEU" => Truncated(Normal(2.8279, 23.8241), 0.0, Inf), "JPK" => Truncated(Normal(1.2018, 24.9514), 0.0, Inf), "ANZ" => Truncated(Normal(2.8314, 53.218), 0.0, Inf), "EEU" => Truncated(Normal(2.8314, 27.0704), 0.0, Inf), "FSU" => Truncated(Normal(2.8314, 62.308), 0.0, Inf), "MDE" => Truncated(Normal(2.7443, 30.2614), 0.0, Inf), "CAM" => Truncated(Normal(2.7085, 45.5507), 0.0, Inf), "LAM" => Truncated(Normal(2.8094, 32.723), 0.0, Inf), "SAS" => Truncated(Normal(2.8314, 51.1794), 0.0, Inf), "SEA" => Truncated(Normal(-1.1081, 12.0474), -Inf, 0.0), "CHI" => Truncated(Normal(2.0193, 43.8025), 0.0, Inf), "MAF" => Truncated(Normal(2.8314, 35.4341), 0.0, Inf), "SSA" => Truncated(Normal(2.6771, 16.5915), 0.0, Inf), "SIS" => Truncated(Normal(0.5138, 7.4905), 0.0, Inf)] + impactcooling.cebm = ["USA" => Truncated(Normal(-0.00212, 0.00212), -Inf, 0.0), "CAN" => Truncated(Normal(-0.00186, 0.00186), -Inf, 0.0), "WEU" => Truncated(Normal(-0.00372, 0.00372), -Inf, 0.0), "JPK" => Truncated(Normal(-0.00029, 0.00029), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.00021, 0.00021), -Inf, 0.0), "EEU" => Truncated(Normal(-0.00185, 0.00185), -Inf, 0.0), "FSU" => Truncated(Normal(-0.00674, 0.00674), -Inf, 0.0), "MDE" => Truncated(Normal(-0.00233, 0.00233), -Inf, 0.0), "CAM" => Truncated(Normal(-0.00239, 0.00239), -Inf, 0.0), "LAM" => Truncated(Normal(-0.00259, 0.00259), -Inf, 0.0), "SAS" => Truncated(Normal(-0.00384, 0.00384), -Inf, 0.0), "SEA" => Truncated(Normal(-0.0074, 0.0074), -Inf, 0.0), "CHI" => Truncated(Normal(-0.02891, 0.02891), -Inf, 0.0), "MAF" => Truncated(Normal(-0.01892, 0.01892), -Inf, 0.0), "SSA" => Truncated(Normal(-0.00797, 0.00797), -Inf, 0.0), "SIS" => Truncated(Normal(-0.00239, 0.00239), -Inf, 0.0)] + impactcooling.ceel = Truncated(Normal(0.8, 0.2), 0.0, 1.0) + impactcooling.cenl = Truncated(Normal(1.5, 0.5), 0.0, Inf) + emissions.ch4add = Normal(0.0, 6.8346) + impactcardiovascularrespiratory.chmlbm = ["USA" => Truncated(Normal(1.0988, 1.0738), 0.0, Inf), "CAN" => Truncated(Normal(1.0705, 1.0738), 0.0, Inf), "WEU" => Truncated(Normal(0.4022, 0.4226), 0.0, Inf), "JPK" => Truncated(Normal(1.0356, 1.1234), 0.0, Inf), "ANZ" => Truncated(Normal(0.4493, 0.9147), 0.0, Inf), "EEU" => Truncated(Normal(0.6119, 0.4767), 0.0, Inf), "FSU" => Truncated(Normal(0.6468, 1.0738), 0.0, Inf), "MDE" => Truncated(Normal(1.0931, 0.4791), 0.0, Inf), "CAM" => Truncated(Normal(0.9144, 0.8887), 0.0, Inf), "LAM" => Truncated(Normal(0.5893, 0.5874), 0.0, Inf), "SAS" => Truncated(Normal(1.6317, 0.8373), 0.0, Inf), "SEA" => Truncated(Normal(0.8545, 0.4641), 0.0, Inf), "CHI" => Truncated(Normal(0.7565, 1.0335), 0.0, Inf), "MAF" => Truncated(Normal(1.0409, 0.5662), 0.0, Inf), "SSA" => Truncated(Normal(0.8682, 0.3408), 0.0, Inf), "SIS" => Truncated(Normal(1.0227, 0.4957), 0.0, Inf)] + impactcardiovascularrespiratory.chmqbm = ["USA" => Truncated(Normal(0.0471, 0.8815), 0.0, Inf), "CAN" => Truncated(Normal(0.0471, 0.8815), 0.0, Inf), "WEU" => Truncated(Normal(0.0467, 0.3469), 0.0, Inf), "JPK" => Truncated(Normal(0.0559, 0.9223), 0.0, Inf), "ANZ" => Truncated(Normal(0.047, 0.7509), 0.0, Inf), "EEU" => Truncated(Normal(0.047, 0.3914), 0.0, Inf), "FSU" => Truncated(Normal(0.0471, 0.8815), 0.0, Inf), "MDE" => Truncated(Normal(0.0452, 0.3933), 0.0, Inf), "CAM" => Truncated(Normal(0.0471, 0.7296), 0.0, Inf), "LAM" => Truncated(Normal(0.047, 0.4823), 0.0, Inf), "SAS" => Truncated(Normal(0.047, 0.6874), 0.0, Inf), "SEA" => Truncated(Normal(0.0411, 0.381), 0.0, Inf), "CHI" => Truncated(Normal(0.0474, 0.8485), 0.0, Inf), "MAF" => Truncated(Normal(0.0471, 0.4648), 0.0, Inf), "SSA" => Truncated(Normal(0.044, 0.2798), 0.0, Inf), "SIS" => Truncated(Normal(0.0324, 0.407), 0.0, Inf)] + impactcardiovascularrespiratory.chplbm = ["USA" => Truncated(Normal(34.9374, 42.9155), 0.0, Inf), "CAN" => Truncated(Normal(27.328, 42.9155), 0.0, Inf), "WEU" => Truncated(Normal(25.757, 17.8447), 0.0, Inf), "JPK" => Truncated(Normal(8.2986, 17.7713), 0.0, Inf), "ANZ" => Truncated(Normal(18.8372, 36.7267), 0.0, Inf), "EEU" => Truncated(Normal(29.6249, 18.8672), 0.0, Inf), "FSU" => Truncated(Normal(36.4415, 42.9155), 0.0, Inf), "MDE" => Truncated(Normal(50.5493, 20.6547), 0.0, Inf), "CAM" => Truncated(Normal(44.7697, 34.4286), 0.0, Inf), "LAM" => Truncated(Normal(33.7621, 23.0347), 0.0, Inf), "SAS" => Truncated(Normal(74.5092, 36.2131), 0.0, Inf), "SEA" => Truncated(Normal(-18.7223, 8.1867), -Inf, 0.0), "CHI" => Truncated(Normal(82.0355, 29.0776), 0.0, Inf), "MAF" => Truncated(Normal(50.4842, 23.0206), 0.0, Inf), "SSA" => Truncated(Normal(43.4397, 13.5145), 0.0, Inf), "SIS" => Truncated(Normal(16.9938, 8.0489), 0.0, Inf)] + impactcardiovascularrespiratory.chpqbm = ["USA" => Truncated(Normal(1.7285, 35.2319), 0.0, Inf), "CAN" => Truncated(Normal(1.7285, 35.2319), 0.0, Inf), "WEU" => Truncated(Normal(1.7966, 14.6498), 0.0, Inf), "JPK" => Truncated(Normal(0.7493, 14.5895), 0.0, Inf), "ANZ" => Truncated(Normal(1.7286, 30.1512), 0.0, Inf), "EEU" => Truncated(Normal(1.7531, 15.4893), 0.0, Inf), "FSU" => Truncated(Normal(1.7285, 35.2319), 0.0, Inf), "MDE" => Truncated(Normal(1.7011, 16.9568), 0.0, Inf), "CAM" => Truncated(Normal(1.662, 28.2646), 0.0, Inf), "LAM" => Truncated(Normal(1.7535, 18.9106), 0.0, Inf), "SAS" => Truncated(Normal(1.7378, 29.7296), 0.0, Inf), "SEA" => Truncated(Normal(-0.6683, 6.721), -Inf, 0.0), "CHI" => Truncated(Normal(1.2095, 23.8716), 0.0, Inf), "MAF" => Truncated(Normal(1.7096, 18.8991), 0.0, Inf), "SSA" => Truncated(Normal(1.6578, 11.0949), 0.0, Inf), "SIS" => Truncated(Normal(0.4223, 6.6079), 0.0, Inf)] + impactcardiovascularrespiratory.cvlin = Truncated(Normal(0.025901, 0.009574), 0.0, Inf) + impactvectorbornediseases.dfch = ["USA" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "CAN" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "WEU" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "JPK" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "ANZ" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "EEU" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "FSU" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "MDE" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "CAM" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "LAM" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "SAS" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "SEA" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "CHI" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "MAF" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "SSA" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf), "SIS" => Truncated(Normal(0.3534, 0.0614), 0.0, Inf)] + impactvectorbornediseases.dfnl = Truncated(Normal(1.0, 0.5), 0.0, Inf) + impactdiarrhoea.diamortel = Truncated(Normal(-1.578625, 0.232507), -Inf, 0.0) + impactdiarrhoea.diamortnl = Truncated(Normal(1.141714, 0.508302), 0.0, Inf) + impactdiarrhoea.diayldel = Truncated(Normal(-0.418406, 0.119223), -1.0, 0.0) + impactdiarrhoea.diayldnl = Truncated(Normal(0.699241, 0.260643), 0.0, Inf) + impactsealevelrise.dlbm = ["USA" => Truncated(Normal(20000.0, 10000.0), 0.0, Inf), "CAN" => Truncated(Normal(970.0, 970.0), 0.0, Inf), "WEU" => Truncated(Normal(4212.0, 1273.0), 0.0, Inf), "JPK" => Truncated(Normal(2687.0, 1213.0), 0.0, Inf), "ANZ" => Truncated(Normal(3135.0, 2920.0), 0.0, Inf), "EEU" => Truncated(Normal(1889.0, 860.0), 0.0, Inf), "FSU" => Truncated(Normal(15138.0, 15138.0), 0.0, Inf), "MDE" => Truncated(Normal(1621.0, 1025.0), 0.0, Inf), "CAM" => Truncated(Normal(12004.0, 8033.0), 0.0, Inf), "LAM" => Truncated(Normal(29407.0, 11847.0), 0.0, Inf), "SAS" => Truncated(Normal(81275.0, 49361.0), 0.0, Inf), "SEA" => Truncated(Normal(157286.0, 90170.0), 0.0, Inf), "CHI" => Truncated(Normal(35000.0, 17500.0), 0.0, Inf), "MAF" => Truncated(Normal(8354.0, 3478.0), 0.0, Inf), "SSA" => Truncated(Normal(126602.0, 63820.0), 0.0, Inf), "SIS" => Truncated(Normal(1505.0, 628.0), 0.0, Inf)] + impactsealevelrise.drylandlossparam = ["USA" => Truncated(Normal(0.583433160330257, 0.0310749451958314), 0.0, 1.0), "CAN" => Truncated(Normal(0.260515053189669, 0.0137582984542109), 0.0, 1.0), "WEU" => Truncated(Normal(0.273314149409615, 0.0146688810943221), 0.0, 1.0), "JPK" => Truncated(Normal(0.412066944374299, 0.0268279386449215), 0.0, 1.0), "ANZ" => Truncated(Normal(0.548496484507909, 0.0353090095289534), 0.0, 1.0), "EEU" => Truncated(Normal(0.193491238230705, 0.0120297038764903), 0.0, 1.0), "FSU" => Truncated(Normal(0.555487676094765, 0.0344126167165359), 0.0, 1.0), "MDE" => Truncated(Normal(0.628422279667412, 0.00914652560895185), 0.0, 1.0), "CAM" => Truncated(Normal(0.678302864355753, 0.0264748504908147), 0.0, 1.0), "LAM" => Truncated(Normal(0.756134247750368, 0.0200692929944761), 0.0, 1.0), "SAS" => Truncated(Normal(0.929957316565567, 0.0241559579142168), 0.0, 1.0), "SEA" => Truncated(Normal(0.81223935947527, 0.0429547897395688), 0.0, 1.0), "CHI" => Truncated(Normal(0.707719142022655, 0.0243920096916722), 0.0, 1.0), "MAF" => Truncated(Normal(0.336949623686827, 0.0195350728174195), 0.0, 1.0), "SSA" => Truncated(Normal(0.798533208857799, 0.0442837491243777), 0.0, 1.0), "SIS" => Truncated(Normal(0.667255915065629, 0.0408474363982656), 0.0, 1.0)] + impactsealevelrise.dvbm = Truncated(Normal(0.004, 0.002), 0.0, Inf) + impactsealevelrise.dvydl = Truncated(Normal(1.0, 0.25), 0.0, Inf) + scenariouncertainty.ecgradd = ["USA" => Truncated(Normal(0.0, 0.28), -0.645266515499562, 1.35473348450044), "CAN" => Truncated(Normal(0.0, 0.28), -0.645266515499562, 1.35473348450044), "WEU" => Truncated(Normal(0.0, 0.2775), -0.645129685612399, 1.3548703143876), "JPK" => Truncated(Normal(0.0, 0.2825), -0.645237785006474, 1.35476221499353), "ANZ" => Truncated(Normal(0.0, 0.2825), -0.645237785006474, 1.35476221499353), "EEU" => Truncated(Normal(0.0, 0.4825), -0.702791192885658, 1.29720880711434), "FSU" => Truncated(Normal(0.0, 0.4825), -0.702791192885658, 1.29720880711434), "MDE" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "CAM" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "LAM" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "SAS" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "SEA" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "CHI" => Truncated(Normal(0.0, 0.7125), -0.761043730670382, 1.23895626932962), "MAF" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "SSA" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122), "SIS" => Truncated(Normal(0.0, 0.65), -0.751960508718775, 1.24803949128122)] + impactsealevelrise.emcst = Truncated(Normal(3.0, 1.5), 0.0, Inf) + impactextratropicalstorms.extratropicalstormsdamel = Truncated(Normal(-0.514, 0.027), -1.0, 0.0) + impactextratropicalstorms.extratropicalstormsdeadel = Truncated(Normal(-0.501, 0.051), -1.0, 0.0) + impactforests.forbm = ["USA" => Normal(5.325e-5, 1.422e-5), "CAN" => Normal(1.123e-5, 7.152e-5), "WEU" => Normal(2.528e-5, 5.7e-6), "JPK" => Normal(4.173e-5, 1.235e-5), "ANZ" => Normal(-0.0001211, 3.255e-5), "EEU" => Normal(5.462e-5, 2.472e-5), "FSU" => Normal(-2.348e-5, 5.312e-5), "MDE" => Normal(0.0, 3.386e-5), "CAM" => Normal(1.806e-5, 3.429e-5), "LAM" => Normal(2.411e-5, 1.195e-5), "SAS" => Normal(6.237e-5, 2.294e-5), "SEA" => Normal(6.674e-5, 2.772e-5), "CHI" => Normal(8.723e-5, 3.22e-5), "MAF" => Normal(0.0, 3.386e-5), "SSA" => Normal(1.141e-5, 3.459e-5), "SIS" => Normal(0.0, 3.386e-5)] + impactforests.forco2 = Truncated(Normal(2.2972, 1.1486), 0.0, Inf) + impactforests.forel = Truncated(Normal(-0.31, 0.2), -1.0, 0.0) + scenariouncertainty.foremadd = ["USA" => Normal(0.0, 0.2025), "CAN" => Normal(0.0, 0.2025), "CAM" => Normal(0.0, 3.185), "LAM" => Normal(0.0, 28.66), "SAS" => Normal(0.0, 4.0375), "SEA" => Normal(0.0, 12.1125), "CHI" => Normal(0.0, 1.2675), "SSA" => Normal(0.0, 11.76)] + impactforests.fornl = Truncated(Normal(1.0, 0.5), 0.0, Inf) + impactheating.hebm = ["USA" => Truncated(Normal(0.00429, 0.00429), 0.0, Inf), "CAN" => Truncated(Normal(0.00378, 0.00378), 0.0, Inf), "WEU" => Truncated(Normal(0.00241, 0.00241), 0.0, Inf), "JPK" => Truncated(Normal(0.00207, 0.00207), 0.0, Inf), "ANZ" => Truncated(Normal(0.00151, 0.00151), 0.0, Inf), "EEU" => Truncated(Normal(0.00456, 0.00456), 0.0, Inf), "FSU" => Truncated(Normal(0.01663, 0.01663), 0.0, Inf), "MDE" => Truncated(Normal(0.02074, 0.02074), 0.0, Inf), "CAM" => Truncated(Normal(0.00366, 0.00366), 0.0, Inf), "LAM" => Truncated(Normal(0.00395, 0.00395), 0.0, Inf), "SAS" => Truncated(Normal(0.00361, 0.00361), 0.0, Inf), "SEA" => Truncated(Normal(0.00695, 0.00695), 0.0, Inf), "CHI" => Truncated(Normal(0.03971, 0.03971), 0.0, Inf), "MAF" => Truncated(Normal(0.00015, 0.00015), 0.0, Inf), "SSA" => Truncated(Normal(6.0e-5, 6.0e-5), 0.0, Inf), "SIS" => Truncated(Normal(0.00366, 0.00366), 0.0, Inf)] + impactheating.heel = Truncated(Normal(0.8, 0.1), 0.0, 1.0) + impactheating.henl = Truncated(Normal(0.5, 0.5), 0.0, Inf) + impacttropicalstorms.hurrdamel = Truncated(Normal(-0.514, 0.027), -1.0, 0.0) + impacttropicalstorms.hurrdeadel = Truncated(Normal(-0.501, 0.051), -1.0, 0.0) + impacttropicalstorms.hurrpar = Normal(0.04, 0.005) + impactsealevelrise.immcst = Truncated(Normal(0.4, 0.2), 0.0, Inf) climatech4cycle.lifech4 = TriangularDist(8.0, 16.0, 12.0) - climateco2cycle.lifeco2 = Truncated(Normal(363.0,90.75), 0.0, Inf) - climateco2cycle.lifeco3 = Truncated(Normal(74.0,18.5), 0.0, Inf) - climateco2cycle.lifeco4 = Truncated(Normal(17.0,4.25), 0.0, Inf) - climateco2cycle.lifeco5 = Truncated(Normal(2.0,0.5), 0.0, Inf) + climateco2cycle.lifeco2 = Truncated(Normal(363.0, 90.75), 0.0, Inf) + climateco2cycle.lifeco3 = Truncated(Normal(74.0, 18.5), 0.0, Inf) + climateco2cycle.lifeco4 = Truncated(Normal(17.0, 4.25), 0.0, Inf) + climateco2cycle.lifeco5 = Truncated(Normal(2.0, 0.5), 0.0, Inf) climaten2ocycle.lifen2o = TriangularDist(100.0, 170.0, 114.0) ocean.lifesea = TriangularDist(250.0, 1000.0, 500.0) climatesf6cycle.lifesf6 = TriangularDist(1600.0, 4800.0, 3200.0) climatedynamics.lifetempconst = Normal(-31.8978379263215, 0.12072054186561) # not in MimiFUND's mcs climatedynamics.lifetemplin = Normal(32.7266970287432, 0.0256648976380545) # not in MimiFUND's mcs climatedynamics.lifetempqd = Normal(-0.00993, 0.001568) # not in MimiFUND's mcs - impactvectorbornediseases.malch = ["USA" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "CAN" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "WEU" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "JPK" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "ANZ" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "EEU" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "FSU" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "MDE" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "CAM" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "LAM" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "SAS" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "SEA" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "CHI" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "MAF" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "SSA" => Truncated(Normal(0.0794,0.0575), 0.0, Inf), "SIS" => Truncated(Normal(0.0794,0.0575), 0.0, Inf)] - impactvectorbornediseases.malnl = Truncated(Normal(1.0,0.5), 0.0, Inf) - impactcardiovascularrespiratory.maxcardvasc = Truncated(Normal(0.05,0.02), 0.0, Inf) - impactsealevelrise.migrate = [["USA", "USA"] => Gamma(101.990195135928,0.00990195135927852), ["USA", "CAN"] => Gamma(1.0,0.05), ["USA", "WEU"] => Gamma(1.0,0.05), ["USA", "JPK"] => Gamma(1.0,0.05), ["USA", "ANZ"] => Gamma(1.0,0.05), ["USA", "EEU"] => Gamma(1.0,0.05), ["USA", "FSU"] => Gamma(1.0,0.05), ["USA", "MDE"] => Gamma(2.0,0.04), ["USA", "CAM"] => Gamma(2.0,0.1), ["USA", "LAM"] => Gamma(2.0,0.1), ["USA", "SAS"] => Gamma(2.0,0.04), ["USA", "SEA"] => Gamma(2.0,0.04), ["USA", "CHI"] => Gamma(2.0,0.04), ["USA", "MAF"] => Gamma(2.0,0.01), ["USA", "SSA"] => Gamma(2.0,0.03), ["USA", "SIS"] => Gamma(2.0,0.15), ["CAN", "USA"] => Gamma(1.0,0.05), ["CAN", "CAN"] => Gamma(101.990195135928,0.00990195135927852), ["CAN", "WEU"] => Gamma(1.0,0.02), ["CAN", "JPK"] => Gamma(1.0,0.02), ["CAN", "ANZ"] => Gamma(1.0,0.02), ["CAN", "EEU"] => Gamma(1.0,0.02), ["CAN", "FSU"] => Gamma(1.0,0.02), ["CAN", "MDE"] => Gamma(2.0,0.01), ["CAN", "CAM"] => Gamma(1.0,0.05), ["CAN", "LAM"] => Gamma(1.0,0.05), ["CAN", "SAS"] => Gamma(2.0,0.01), ["CAN", "SEA"] => Gamma(2.0,0.01), ["CAN", "CHI"] => Gamma(2.0,0.01), ["CAN", "MAF"] => Gamma(1.0,0.005), ["CAN", "SSA"] => Gamma(2.0,0.005), ["CAN", "SIS"] => Gamma(2.0,0.1), ["WEU", "USA"] => Gamma(1.0,0.02), ["WEU", "CAN"] => Gamma(1.0,0.02), ["WEU", "WEU"] => Gamma(101.990195135928,0.00990195135927852), ["WEU", "JPK"] => Gamma(1.0,0.02), ["WEU", "ANZ"] => Gamma(1.0,0.02), ["WEU", "EEU"] => Gamma(1.0,0.02), ["WEU", "FSU"] => Gamma(1.0,0.02), ["WEU", "MDE"] => Gamma(2.0,0.04), ["WEU", "CAM"] => Gamma(1.0,0.05), ["WEU", "LAM"] => Gamma(1.0,0.05), ["WEU", "SAS"] => Gamma(2.0,0.04), ["WEU", "SEA"] => Gamma(2.0,0.02), ["WEU", "CHI"] => Gamma(2.0,0.02), ["WEU", "MAF"] => Gamma(2.0,0.09), ["WEU", "SSA"] => Gamma(2.0,0.06), ["WEU", "SIS"] => Gamma(2.0,0.15), ["JPK", "USA"] => Gamma(1.0,0.01), ["JPK", "CAN"] => Gamma(1.0,0.01), ["JPK", "WEU"] => Gamma(1.0,0.01), ["JPK", "JPK"] => Gamma(101.990195135928,0.00990195135927852), ["JPK", "ANZ"] => Gamma(1.0,0.01), ["JPK", "EEU"] => Gamma(1.0,0.001), ["JPK", "FSU"] => Gamma(1.0,0.001), ["JPK", "MDE"] => Gamma(1.0,0.005), ["JPK", "CAM"] => Gamma(1.0,0.01), ["JPK", "LAM"] => Gamma(1.0,0.01), ["JPK", "SAS"] => Gamma(2.0,0.005), ["JPK", "SEA"] => Gamma(2.0,0.01), ["JPK", "CHI"] => Gamma(2.0,0.01), ["JPK", "MAF"] => Gamma(1.0,0.001), ["JPK", "SSA"] => Gamma(1.0,0.001), ["JPK", "SIS"] => Gamma(2.0,0.05), ["ANZ", "USA"] => Gamma(1.0,0.02), ["ANZ", "CAN"] => Gamma(1.0,0.02), ["ANZ", "WEU"] => Gamma(1.0,0.02), ["ANZ", "JPK"] => Gamma(1.0,0.02), ["ANZ", "ANZ"] => Gamma(101.990195135928,0.00990195135927852), ["ANZ", "EEU"] => Gamma(1.0,0.01), ["ANZ", "FSU"] => Gamma(1.0,0.01), ["ANZ", "MDE"] => Gamma(2.0,0.01), ["ANZ", "CAM"] => Gamma(1.0,0.01), ["ANZ", "LAM"] => Gamma(1.0,0.01), ["ANZ", "SAS"] => Gamma(2.0,0.005), ["ANZ", "SEA"] => Gamma(2.0,0.02), ["ANZ", "CHI"] => Gamma(2.0,0.02), ["ANZ", "MAF"] => Gamma(1.0,0.005), ["ANZ", "SSA"] => Gamma(2.0,0.005), ["ANZ", "SIS"] => Gamma(2.0,0.15), ["EEU", "USA"] => Gamma(1.0,0.001), ["EEU", "CAN"] => Gamma(1.0,0.001), ["EEU", "WEU"] => Gamma(1.0,0.001), ["EEU", "JPK"] => Gamma(1.0,0.001), ["EEU", "ANZ"] => Gamma(1.0,0.001), ["EEU", "EEU"] => Gamma(101.990195135928,0.00990195135927852), ["EEU", "FSU"] => Gamma(1.0,0.05), ["EEU", "MDE"] => Gamma(1.0,0.001), ["EEU", "CAM"] => Gamma(1.0,0.001), ["EEU", "LAM"] => Gamma(1.0,0.001), ["EEU", "SAS"] => Gamma(1.0,0.001), ["EEU", "SEA"] => Gamma(1.0,0.001), ["EEU", "CHI"] => Gamma(1.0,0.001), ["EEU", "MAF"] => Gamma(1.0,0.001), ["EEU", "SSA"] => Gamma(1.0,0.001), ["EEU", "SIS"] => Gamma(1.0,0.001), ["FSU", "USA"] => Gamma(1.0,0.001), ["FSU", "CAN"] => Gamma(1.0,0.001), ["FSU", "WEU"] => Gamma(1.0,0.001), ["FSU", "JPK"] => Gamma(1.0,0.001), ["FSU", "ANZ"] => Gamma(1.0,0.001), ["FSU", "EEU"] => Gamma(1.0,0.001), ["FSU", "FSU"] => Gamma(101.990195135928,0.00990195135927852), ["FSU", "MDE"] => Gamma(1.0,0.001), ["FSU", "CAM"] => Gamma(1.0,0.001), ["FSU", "LAM"] => Gamma(1.0,0.001), ["FSU", "SAS"] => Gamma(1.0,0.001), ["FSU", "SEA"] => Gamma(1.0,0.001), ["FSU", "CHI"] => Gamma(1.0,0.001), ["FSU", "MAF"] => Gamma(1.0,0.001), ["FSU", "SSA"] => Gamma(1.0,0.001), ["FSU", "SIS"] => Gamma(1.0,0.001), ["MDE", "USA"] => Gamma(1.0,0.001), ["MDE", "CAN"] => Gamma(1.0,0.001), ["MDE", "WEU"] => Gamma(1.0,0.001), ["MDE", "JPK"] => Gamma(1.0,0.001), ["MDE", "ANZ"] => Gamma(1.0,0.001), ["MDE", "EEU"] => Gamma(1.0,0.001), ["MDE", "FSU"] => Gamma(1.0,0.001), ["MDE", "MDE"] => Gamma(82.987950057818,0.0109772228646444), ["MDE", "CAM"] => Gamma(1.0,0.001), ["MDE", "LAM"] => Gamma(1.0,0.001), ["MDE", "SAS"] => Gamma(1.0,0.001), ["MDE", "SEA"] => Gamma(1.0,0.001), ["MDE", "CHI"] => Gamma(1.0,0.001), ["MDE", "MAF"] => Gamma(1.0,0.001), ["MDE", "SSA"] => Gamma(1.0,0.001), ["MDE", "SIS"] => Gamma(1.0,0.001), ["CAM", "USA"] => Gamma(1.0,0.001), ["CAM", "CAN"] => Gamma(1.0,0.001), ["CAM", "WEU"] => Gamma(1.0,0.001), ["CAM", "JPK"] => Gamma(1.0,0.001), ["CAM", "ANZ"] => Gamma(1.0,0.001), ["CAM", "EEU"] => Gamma(1.0,0.001), ["CAM", "FSU"] => Gamma(1.0,0.001), ["CAM", "MDE"] => Gamma(1.0,0.001), ["CAM", "CAM"] => Gamma(82.987950057818,0.0109772228646444), ["CAM", "LAM"] => Gamma(1.0,0.005), ["CAM", "SAS"] => Gamma(1.0,0.001), ["CAM", "SEA"] => Gamma(1.0,0.001), ["CAM", "CHI"] => Gamma(1.0,0.001), ["CAM", "MAF"] => Gamma(1.0,0.001), ["CAM", "SSA"] => Gamma(1.0,0.001), ["CAM", "SIS"] => Gamma(2.0,0.1), ["LAM", "USA"] => Gamma(1.0,0.001), ["LAM", "CAN"] => Gamma(1.0,0.001), ["LAM", "WEU"] => Gamma(1.0,0.001), ["LAM", "JPK"] => Gamma(1.0,0.001), ["LAM", "ANZ"] => Gamma(1.0,0.001), ["LAM", "EEU"] => Gamma(1.0,0.001), ["LAM", "FSU"] => Gamma(1.0,0.001), ["LAM", "MDE"] => Gamma(1.0,0.001), ["LAM", "CAM"] => Gamma(1.0,0.005), ["LAM", "LAM"] => Gamma(82.987950057818,0.0109772228646444), ["LAM", "SAS"] => Gamma(1.0,0.001), ["LAM", "SEA"] => Gamma(1.0,0.001), ["LAM", "CHI"] => Gamma(1.0,0.001), ["LAM", "MAF"] => Gamma(1.0,0.001), ["LAM", "SSA"] => Gamma(1.0,0.001), ["LAM", "SIS"] => Gamma(2.0,0.1), ["SAS", "USA"] => Gamma(1.0,0.001), ["SAS", "CAN"] => Gamma(1.0,0.001), ["SAS", "WEU"] => Gamma(1.0,0.001), ["SAS", "JPK"] => Gamma(1.0,0.001), ["SAS", "ANZ"] => Gamma(1.0,0.001), ["SAS", "EEU"] => Gamma(1.0,0.001), ["SAS", "FSU"] => Gamma(1.0,0.001), ["SAS", "MDE"] => Gamma(1.0,0.001), ["SAS", "CAM"] => Gamma(1.0,0.001), ["SAS", "LAM"] => Gamma(1.0,0.001), ["SAS", "SAS"] => Gamma(82.987950057818,0.0109772228646444), ["SAS", "SEA"] => Gamma(1.0,0.005), ["SAS", "CHI"] => Gamma(1.0,0.001), ["SAS", "MAF"] => Gamma(1.0,0.001), ["SAS", "SSA"] => Gamma(1.0,0.001), ["SAS", "SIS"] => Gamma(2.0,0.1), ["SEA", "USA"] => Gamma(1.0,0.001), ["SEA", "CAN"] => Gamma(1.0,0.001), ["SEA", "WEU"] => Gamma(1.0,0.001), ["SEA", "JPK"] => Gamma(1.0,0.001), ["SEA", "ANZ"] => Gamma(1.0,0.001), ["SEA", "EEU"] => Gamma(1.0,0.001), ["SEA", "FSU"] => Gamma(1.0,0.001), ["SEA", "MDE"] => Gamma(1.0,0.001), ["SEA", "CAM"] => Gamma(1.0,0.001), ["SEA", "LAM"] => Gamma(1.0,0.001), ["SEA", "SAS"] => Gamma(1.0,0.005), ["SEA", "SEA"] => Gamma(82.987950057818,0.0109772228646444), ["SEA", "CHI"] => Gamma(1.0,0.005), ["SEA", "MAF"] => Gamma(1.0,0.001), ["SEA", "SSA"] => Gamma(1.0,0.001), ["SEA", "SIS"] => Gamma(2.0,0.1), ["CHI", "USA"] => Gamma(1.0,0.001), ["CHI", "CAN"] => Gamma(1.0,0.001), ["CHI", "WEU"] => Gamma(1.0,0.001), ["CHI", "JPK"] => Gamma(1.0,0.001), ["CHI", "ANZ"] => Gamma(1.0,0.001), ["CHI", "EEU"] => Gamma(1.0,0.001), ["CHI", "FSU"] => Gamma(1.0,0.001), ["CHI", "MDE"] => Gamma(1.0,0.001), ["CHI", "CAM"] => Gamma(1.0,0.001), ["CHI", "LAM"] => Gamma(1.0,0.001), ["CHI", "SAS"] => Gamma(1.0,0.001), ["CHI", "SEA"] => Gamma(1.0,0.001), ["CHI", "CHI"] => Gamma(82.987950057818,0.0109772228646444), ["CHI", "MAF"] => Gamma(1.0,0.001), ["CHI", "SSA"] => Gamma(1.0,0.001), ["CHI", "SIS"] => Gamma(1.0,0.001), ["MAF", "USA"] => Gamma(1.0,0.001), ["MAF", "CAN"] => Gamma(1.0,0.001), ["MAF", "WEU"] => Gamma(1.0,0.001), ["MAF", "JPK"] => Gamma(1.0,0.001), ["MAF", "ANZ"] => Gamma(1.0,0.001), ["MAF", "EEU"] => Gamma(1.0,0.001), ["MAF", "FSU"] => Gamma(1.0,0.001), ["MAF", "MDE"] => Gamma(1.0,0.001), ["MAF", "CAM"] => Gamma(1.0,0.001), ["MAF", "LAM"] => Gamma(1.0,0.001), ["MAF", "SAS"] => Gamma(1.0,0.001), ["MAF", "SEA"] => Gamma(1.0,0.001), ["MAF", "CHI"] => Gamma(1.0,0.001), ["MAF", "MAF"] => Gamma(82.987950057818,0.0109772228646444), ["MAF", "SSA"] => Gamma(1.0,0.005), ["MAF", "SIS"] => Gamma(1.0,0.001), ["SSA", "USA"] => Gamma(1.0,0.001), ["SSA", "CAN"] => Gamma(1.0,0.001), ["SSA", "WEU"] => Gamma(1.0,0.001), ["SSA", "JPK"] => Gamma(1.0,0.001), ["SSA", "ANZ"] => Gamma(1.0,0.001), ["SSA", "EEU"] => Gamma(1.0,0.001), ["SSA", "FSU"] => Gamma(1.0,0.001), ["SSA", "MDE"] => Gamma(1.0,0.001), ["SSA", "CAM"] => Gamma(1.0,0.001), ["SSA", "LAM"] => Gamma(1.0,0.001), ["SSA", "SAS"] => Gamma(1.0,0.001), ["SSA", "SEA"] => Gamma(1.0,0.001), ["SSA", "CHI"] => Gamma(1.0,0.001), ["SSA", "MAF"] => Gamma(1.0,0.001), ["SSA", "SSA"] => Gamma(82.987950057818,0.0109772228646444), ["SSA", "SIS"] => Gamma(1.0,0.001), ["SIS", "USA"] => Gamma(1.0,0.001), ["SIS", "CAN"] => Gamma(1.0,0.001), ["SIS", "WEU"] => Gamma(1.0,0.001), ["SIS", "JPK"] => Gamma(1.0,0.001), ["SIS", "ANZ"] => Gamma(1.0,0.001), ["SIS", "EEU"] => Gamma(1.0,0.001), ["SIS", "FSU"] => Gamma(1.0,0.001), ["SIS", "MDE"] => Gamma(1.0,0.001), ["SIS", "CAM"] => Gamma(1.0,0.001), ["SIS", "LAM"] => Gamma(1.0,0.001), ["SIS", "SAS"] => Gamma(1.0,0.001), ["SIS", "SEA"] => Gamma(1.0,0.001), ["SIS", "CHI"] => Gamma(1.0,0.001), ["SIS", "MAF"] => Gamma(1.0,0.001), ["SIS", "SSA"] => Gamma(1.0,0.001), ["SIS", "SIS"] => Gamma(1.0,0.1)] - emissions.n2oadd = Normal(0.0,0.0059) - impactsealevelrise.pc = ["USA" => Truncated(Normal(95.3,95.3), 0.0, Inf), "CAN" => Truncated(Normal(13.0,13.0), 0.0, Inf), "WEU" => Truncated(Normal(153.9,52.6), 0.0, Inf), "JPK" => Truncated(Normal(75.5,54.7), 0.0, Inf), "ANZ" => Truncated(Normal(36.6,26.8), 0.0, Inf), "EEU" => Truncated(Normal(3.1,1.7), 0.0, Inf), "FSU" => Truncated(Normal(54.0,54.0), 0.0, Inf), "MDE" => Truncated(Normal(18.9,9.6), 0.0, Inf), "CAM" => Truncated(Normal(42.3,33.8), 0.0, Inf), "LAM" => Truncated(Normal(117.6,79.0), 0.0, Inf), "SAS" => Truncated(Normal(172.0,153.6), 0.0, Inf), "SEA" => Truncated(Normal(169.7,84.4), 0.0, Inf), "CHI" => Truncated(Normal(118.4,118.4), 0.0, Inf), "MAF" => Truncated(Normal(19.0,10.2), 0.0, Inf), "SSA" => Truncated(Normal(84.3,38.3), 0.0, Inf), "SIS" => Truncated(Normal(16.0,5.7), 0.0, Inf)] - scenariouncertainty.pgadd = ["USA" => Normal(0.0,0.00625), "CAN" => Normal(0.0,0.00625), "WEU" => Normal(0.0,0.00625), "JPK" => Normal(0.0,0.01875), "ANZ" => Normal(0.0,0.01875), "EEU" => Normal(0.0,0.00625), "FSU" => Normal(0.0,0.00625), "MDE" => Normal(0.0,0.09375), "CAM" => Normal(0.0,0.0375), "LAM" => Normal(0.0,0.0375), "SAS" => Normal(0.0,0.09375), "SEA" => Normal(0.0,0.09375), "CHI" => Normal(0.0,0.01875), "MAF" => Normal(0.0,0.15625), "SSA" => Normal(0.0,0.15625), "SIS" => Normal(0.0,0.0375)] - socioeconomic.plusel = Truncated(Normal(0.25,0.08), 0.0, Inf) - impactcardiovascularrespiratory.rlbm = ["USA" => Normal(0.9452,6.7337), "CAN" => Normal(-1.9284,6.7337), "WEU" => Normal(-0.765,2.4863), "JPK" => Normal(0.4185,5.813), "ANZ" => Normal(0.2579,5.7279), "EEU" => Normal(-1.2946,2.9883), "FSU" => Normal(1.5277,6.7337), "MDE" => Normal(5.6711,3.069), "CAM" => Normal(3.8894,5.0789), "LAM" => Normal(1.0893,3.6563), "SAS" => Normal(10.2485,5.1264), "SEA" => Normal(4.8562,3.2809), "CHI" => Normal(4.4083,6.5634), "MAF" => Normal(5.198,3.7408), "SSA" => Normal(3.6196,1.8681), "SIS" => Normal(4.1354,2.033)] - impactcardiovascularrespiratory.rlin = Truncated(Normal(0.001583,0.000457), 0.0, Inf) - impactcardiovascularrespiratory.rqbm = ["USA" => Normal(0.4342,5.5281), "CAN" => Normal(0.4342,5.5281), "WEU" => Normal(0.4341,2.0412), "JPK" => Normal(0.4342,4.7723), "ANZ" => Normal(0.4342,4.7024), "EEU" => Normal(0.4342,2.4533), "FSU" => Normal(0.4342,5.5281), "MDE" => Normal(0.4194,2.5196), "CAM" => Normal(0.4342,4.1696), "LAM" => Normal(0.4335,3.0017), "SAS" => Normal(0.4342,4.2086), "SEA" => Normal(0.4339,2.6935), "CHI" => Normal(0.4319,5.3883), "MAF" => Normal(0.4341,3.0711), "SSA" => Normal(0.411,1.5337), "SIS" => Normal(0.2522,1.669)] - ocean.seas = Gamma(6.0,0.4) - emissions.sf6add = Normal(0.0,0.08) - impactvectorbornediseases.smch = ["USA" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "CAN" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "WEU" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "JPK" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "EEU" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "FSU" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "MDE" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "CAM" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "LAM" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "SAS" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "SEA" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "CHI" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "MAF" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "SSA" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0), "SIS" => Truncated(Normal(-0.1149,0.0614), -Inf, 0.0)] - impactvectorbornediseases.smnl = Truncated(Normal(1.0,0.5), 0.0, Inf) - impactbiodiversity.spbm = Truncated(Normal(50.0,50.0), 0.0, Inf) - emissions.taxmp = ["USA" => Gamma(5.8284,0.2071), "CAN" => Gamma(5.8284,0.2071), "WEU" => Gamma(5.8284,0.2071), "JPK" => Gamma(5.8284,0.2071), "ANZ" => Gamma(5.8284,0.2071), "EEU" => Gamma(5.8284,0.2071), "FSU" => Gamma(5.8284,0.2071), "MDE" => Gamma(5.8284,0.2071), "CAM" => Gamma(5.8284,0.2071), "LAM" => Gamma(5.8284,0.2071), "SAS" => Gamma(5.8284,0.2071), "SEA" => Gamma(5.8284,0.2071), "CHI" => Gamma(5.8284,0.2071), "MAF" => Gamma(5.8284,0.2071), "SSA" => Gamma(5.8284,0.2071), "SIS" => Gamma(5.8284,0.2071)] - climateco2cycle.terrco2sens = Gamma(4.92255,662.834125760029) - impactbiodiversity.valinc = ["USA" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "CAN" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "WEU" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "JPK" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "ANZ" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "EEU" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "FSU" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "MDE" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "CAM" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "LAM" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "SAS" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "SEA" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "CHI" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "MAF" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "SSA" => Truncated(Normal(30000.0,10000.0), 0.0, Inf), "SIS" => Truncated(Normal(30000.0,10000.0), 0.0, Inf)] - impactvectorbornediseases.vbel = Truncated(Normal(-2.65,0.69), -Inf, 0.0) - vslvmorb.vmorbbm = Truncated(Normal(19970.090515545,29955.1357733176), 0.0, Inf) - vslvmorb.vmorbel = Truncated(Normal(1.0,0.2), 0.0, Inf) - vslvmorb.vslbm = Truncated(Normal(4.99252262888626e6,2.49626131444313e6), 0.0, Inf) - vslvmorb.vslel = Truncated(Normal(1.0,0.2), 0.0, Inf) - impactwaterresources.watechrate = Truncated(Normal(0.005,0.005), 0.0, Inf) - impactsealevelrise.wlbm = ["USA" => Truncated(Normal(11400.0,5700.0), 0.0, Inf), "WEU" => Truncated(Normal(3210.0,1335.0), 0.0, Inf), "JPK" => Truncated(Normal(573.0,573.0), 0.0, Inf), "ANZ" => Truncated(Normal(256.0,256.0), 0.0, Inf), "EEU" => Truncated(Normal(38.0,18.0), 0.0, Inf), "CAM" => Truncated(Normal(14775.0,11171.0), 0.0, Inf), "LAM" => Truncated(Normal(27234.0,19016.0), 0.0, Inf), "SAS" => Truncated(Normal(14303.0,6005.0), 0.0, Inf), "SEA" => Truncated(Normal(50885.0,29599.0), 0.0, Inf), "CHI" => Truncated(Normal(5879.0,5879.0), 0.0, Inf), "MAF" => Truncated(Normal(2649.0,1989.0), 0.0, Inf), "SSA" => Truncated(Normal(27847.0,9024.0), 0.0, Inf), "SIS" => Truncated(Normal(1528.0,1067.0), 0.0, Inf)] - impactsealevelrise.wmbm = ["USA" => Truncated(Normal(789.0,8344.0), 0.0, Inf), "WEU" => Truncated(Normal(903.0,2188.0), 0.0, Inf), "JPK" => Truncated(Normal(7.0,815.0), 0.0, Inf), "ANZ" => Truncated(Normal(183.0,508.0), 0.0, Inf), "EEU" => Truncated(Normal(0.0,26.0), 0.0, Inf), "CAM" => Truncated(Normal(238.0,15832.0), 0.0, Inf), "LAM" => Truncated(Normal(4748.0,28997.0), 0.0, Inf), "SAS" => Truncated(Normal(0.0,8492.0), 0.0, Inf), "SEA" => Truncated(Normal(4.0,41860.0), 0.0, Inf), "CHI" => Truncated(Normal(1779.0,9654.0), 0.0, Inf), "MAF" => Truncated(Normal(0.0,2814.0), 0.0, Inf), "SSA" => Truncated(Normal(345.0,12768.0), 0.0, Inf), "SIS" => Truncated(Normal(169.0,1516.0), 0.0, Inf)] - impactwaterresources.wrbm = ["USA" => Normal(-0.00065,0.00065), "CAN" => Normal(-0.00057,0.00057), "WEU" => Normal(-0.00027,0.00027), "JPK" => Normal(3.0e-6,3.0e-6), "ANZ" => Normal(3.0e-6,3.0e-6), "EEU" => Normal(-0.00697,0.00697), "FSU" => Normal(-0.02754,0.02754), "MDE" => Normal(-0.00133,0.00133), "CAM" => Normal(-0.0013,0.0013), "LAM" => Normal(-0.0014,0.0014), "SAS" => Normal(-0.00156,0.00156), "SEA" => Normal(-0.00314,0.00314), "CHI" => Normal(0.00569,0.00569), "MAF" => Normal(-0.00902,0.00902), "SSA" => Normal(-0.0036,0.0036), "SIS" => Normal(-0.0013,0.0013)] - impactwaterresources.wrel = Truncated(Normal(0.85,0.15), 0.0, 1.0) - impactwaterresources.wrnl = Truncated(Normal(1.0,0.5), 0.0, Inf) - impactwaterresources.wrpl = Truncated(Normal(0.85,0.15), 0.0, Inf) - impactsealevelrise.wvbm = Truncated(Normal(0.00588,0.003927), 0.0, Inf) - impactsealevelrise.wvel = Truncated(Normal(1.16,0.46), 0.0, Inf) - impactsealevelrise.wvpdl = Truncated(Normal(0.47,0.12), 0.0, 1.0) - impactsealevelrise.wvsl = Truncated(Normal(-0.11,0.05), -1.0, 0.0) + impactvectorbornediseases.malch = ["USA" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "CAN" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "WEU" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "JPK" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "ANZ" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "EEU" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "FSU" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "MDE" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "CAM" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "LAM" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "SAS" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "SEA" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "CHI" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "MAF" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "SSA" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf), "SIS" => Truncated(Normal(0.0794, 0.0575), 0.0, Inf)] + impactvectorbornediseases.malnl = Truncated(Normal(1.0, 0.5), 0.0, Inf) + impactcardiovascularrespiratory.maxcardvasc = Truncated(Normal(0.05, 0.02), 0.0, Inf) + impactsealevelrise.migrate = [["USA", "USA"] => Gamma(101.990195135928, 0.00990195135927852), ["USA", "CAN"] => Gamma(1.0, 0.05), ["USA", "WEU"] => Gamma(1.0, 0.05), ["USA", "JPK"] => Gamma(1.0, 0.05), ["USA", "ANZ"] => Gamma(1.0, 0.05), ["USA", "EEU"] => Gamma(1.0, 0.05), ["USA", "FSU"] => Gamma(1.0, 0.05), ["USA", "MDE"] => Gamma(2.0, 0.04), ["USA", "CAM"] => Gamma(2.0, 0.1), ["USA", "LAM"] => Gamma(2.0, 0.1), ["USA", "SAS"] => Gamma(2.0, 0.04), ["USA", "SEA"] => Gamma(2.0, 0.04), ["USA", "CHI"] => Gamma(2.0, 0.04), ["USA", "MAF"] => Gamma(2.0, 0.01), ["USA", "SSA"] => Gamma(2.0, 0.03), ["USA", "SIS"] => Gamma(2.0, 0.15), ["CAN", "USA"] => Gamma(1.0, 0.05), ["CAN", "CAN"] => Gamma(101.990195135928, 0.00990195135927852), ["CAN", "WEU"] => Gamma(1.0, 0.02), ["CAN", "JPK"] => Gamma(1.0, 0.02), ["CAN", "ANZ"] => Gamma(1.0, 0.02), ["CAN", "EEU"] => Gamma(1.0, 0.02), ["CAN", "FSU"] => Gamma(1.0, 0.02), ["CAN", "MDE"] => Gamma(2.0, 0.01), ["CAN", "CAM"] => Gamma(1.0, 0.05), ["CAN", "LAM"] => Gamma(1.0, 0.05), ["CAN", "SAS"] => Gamma(2.0, 0.01), ["CAN", "SEA"] => Gamma(2.0, 0.01), ["CAN", "CHI"] => Gamma(2.0, 0.01), ["CAN", "MAF"] => Gamma(1.0, 0.005), ["CAN", "SSA"] => Gamma(2.0, 0.005), ["CAN", "SIS"] => Gamma(2.0, 0.1), ["WEU", "USA"] => Gamma(1.0, 0.02), ["WEU", "CAN"] => Gamma(1.0, 0.02), ["WEU", "WEU"] => Gamma(101.990195135928, 0.00990195135927852), ["WEU", "JPK"] => Gamma(1.0, 0.02), ["WEU", "ANZ"] => Gamma(1.0, 0.02), ["WEU", "EEU"] => Gamma(1.0, 0.02), ["WEU", "FSU"] => Gamma(1.0, 0.02), ["WEU", "MDE"] => Gamma(2.0, 0.04), ["WEU", "CAM"] => Gamma(1.0, 0.05), ["WEU", "LAM"] => Gamma(1.0, 0.05), ["WEU", "SAS"] => Gamma(2.0, 0.04), ["WEU", "SEA"] => Gamma(2.0, 0.02), ["WEU", "CHI"] => Gamma(2.0, 0.02), ["WEU", "MAF"] => Gamma(2.0, 0.09), ["WEU", "SSA"] => Gamma(2.0, 0.06), ["WEU", "SIS"] => Gamma(2.0, 0.15), ["JPK", "USA"] => Gamma(1.0, 0.01), ["JPK", "CAN"] => Gamma(1.0, 0.01), ["JPK", "WEU"] => Gamma(1.0, 0.01), ["JPK", "JPK"] => Gamma(101.990195135928, 0.00990195135927852), ["JPK", "ANZ"] => Gamma(1.0, 0.01), ["JPK", "EEU"] => Gamma(1.0, 0.001), ["JPK", "FSU"] => Gamma(1.0, 0.001), ["JPK", "MDE"] => Gamma(1.0, 0.005), ["JPK", "CAM"] => Gamma(1.0, 0.01), ["JPK", "LAM"] => Gamma(1.0, 0.01), ["JPK", "SAS"] => Gamma(2.0, 0.005), ["JPK", "SEA"] => Gamma(2.0, 0.01), ["JPK", "CHI"] => Gamma(2.0, 0.01), ["JPK", "MAF"] => Gamma(1.0, 0.001), ["JPK", "SSA"] => Gamma(1.0, 0.001), ["JPK", "SIS"] => Gamma(2.0, 0.05), ["ANZ", "USA"] => Gamma(1.0, 0.02), ["ANZ", "CAN"] => Gamma(1.0, 0.02), ["ANZ", "WEU"] => Gamma(1.0, 0.02), ["ANZ", "JPK"] => Gamma(1.0, 0.02), ["ANZ", "ANZ"] => Gamma(101.990195135928, 0.00990195135927852), ["ANZ", "EEU"] => Gamma(1.0, 0.01), ["ANZ", "FSU"] => Gamma(1.0, 0.01), ["ANZ", "MDE"] => Gamma(2.0, 0.01), ["ANZ", "CAM"] => Gamma(1.0, 0.01), ["ANZ", "LAM"] => Gamma(1.0, 0.01), ["ANZ", "SAS"] => Gamma(2.0, 0.005), ["ANZ", "SEA"] => Gamma(2.0, 0.02), ["ANZ", "CHI"] => Gamma(2.0, 0.02), ["ANZ", "MAF"] => Gamma(1.0, 0.005), ["ANZ", "SSA"] => Gamma(2.0, 0.005), ["ANZ", "SIS"] => Gamma(2.0, 0.15), ["EEU", "USA"] => Gamma(1.0, 0.001), ["EEU", "CAN"] => Gamma(1.0, 0.001), ["EEU", "WEU"] => Gamma(1.0, 0.001), ["EEU", "JPK"] => Gamma(1.0, 0.001), ["EEU", "ANZ"] => Gamma(1.0, 0.001), ["EEU", "EEU"] => Gamma(101.990195135928, 0.00990195135927852), ["EEU", "FSU"] => Gamma(1.0, 0.05), ["EEU", "MDE"] => Gamma(1.0, 0.001), ["EEU", "CAM"] => Gamma(1.0, 0.001), ["EEU", "LAM"] => Gamma(1.0, 0.001), ["EEU", "SAS"] => Gamma(1.0, 0.001), ["EEU", "SEA"] => Gamma(1.0, 0.001), ["EEU", "CHI"] => Gamma(1.0, 0.001), ["EEU", "MAF"] => Gamma(1.0, 0.001), ["EEU", "SSA"] => Gamma(1.0, 0.001), ["EEU", "SIS"] => Gamma(1.0, 0.001), ["FSU", "USA"] => Gamma(1.0, 0.001), ["FSU", "CAN"] => Gamma(1.0, 0.001), ["FSU", "WEU"] => Gamma(1.0, 0.001), ["FSU", "JPK"] => Gamma(1.0, 0.001), ["FSU", "ANZ"] => Gamma(1.0, 0.001), ["FSU", "EEU"] => Gamma(1.0, 0.001), ["FSU", "FSU"] => Gamma(101.990195135928, 0.00990195135927852), ["FSU", "MDE"] => Gamma(1.0, 0.001), ["FSU", "CAM"] => Gamma(1.0, 0.001), ["FSU", "LAM"] => Gamma(1.0, 0.001), ["FSU", "SAS"] => Gamma(1.0, 0.001), ["FSU", "SEA"] => Gamma(1.0, 0.001), ["FSU", "CHI"] => Gamma(1.0, 0.001), ["FSU", "MAF"] => Gamma(1.0, 0.001), ["FSU", "SSA"] => Gamma(1.0, 0.001), ["FSU", "SIS"] => Gamma(1.0, 0.001), ["MDE", "USA"] => Gamma(1.0, 0.001), ["MDE", "CAN"] => Gamma(1.0, 0.001), ["MDE", "WEU"] => Gamma(1.0, 0.001), ["MDE", "JPK"] => Gamma(1.0, 0.001), ["MDE", "ANZ"] => Gamma(1.0, 0.001), ["MDE", "EEU"] => Gamma(1.0, 0.001), ["MDE", "FSU"] => Gamma(1.0, 0.001), ["MDE", "MDE"] => Gamma(82.987950057818, 0.0109772228646444), ["MDE", "CAM"] => Gamma(1.0, 0.001), ["MDE", "LAM"] => Gamma(1.0, 0.001), ["MDE", "SAS"] => Gamma(1.0, 0.001), ["MDE", "SEA"] => Gamma(1.0, 0.001), ["MDE", "CHI"] => Gamma(1.0, 0.001), ["MDE", "MAF"] => Gamma(1.0, 0.001), ["MDE", "SSA"] => Gamma(1.0, 0.001), ["MDE", "SIS"] => Gamma(1.0, 0.001), ["CAM", "USA"] => Gamma(1.0, 0.001), ["CAM", "CAN"] => Gamma(1.0, 0.001), ["CAM", "WEU"] => Gamma(1.0, 0.001), ["CAM", "JPK"] => Gamma(1.0, 0.001), ["CAM", "ANZ"] => Gamma(1.0, 0.001), ["CAM", "EEU"] => Gamma(1.0, 0.001), ["CAM", "FSU"] => Gamma(1.0, 0.001), ["CAM", "MDE"] => Gamma(1.0, 0.001), ["CAM", "CAM"] => Gamma(82.987950057818, 0.0109772228646444), ["CAM", "LAM"] => Gamma(1.0, 0.005), ["CAM", "SAS"] => Gamma(1.0, 0.001), ["CAM", "SEA"] => Gamma(1.0, 0.001), ["CAM", "CHI"] => Gamma(1.0, 0.001), ["CAM", "MAF"] => Gamma(1.0, 0.001), ["CAM", "SSA"] => Gamma(1.0, 0.001), ["CAM", "SIS"] => Gamma(2.0, 0.1), ["LAM", "USA"] => Gamma(1.0, 0.001), ["LAM", "CAN"] => Gamma(1.0, 0.001), ["LAM", "WEU"] => Gamma(1.0, 0.001), ["LAM", "JPK"] => Gamma(1.0, 0.001), ["LAM", "ANZ"] => Gamma(1.0, 0.001), ["LAM", "EEU"] => Gamma(1.0, 0.001), ["LAM", "FSU"] => Gamma(1.0, 0.001), ["LAM", "MDE"] => Gamma(1.0, 0.001), ["LAM", "CAM"] => Gamma(1.0, 0.005), ["LAM", "LAM"] => Gamma(82.987950057818, 0.0109772228646444), ["LAM", "SAS"] => Gamma(1.0, 0.001), ["LAM", "SEA"] => Gamma(1.0, 0.001), ["LAM", "CHI"] => Gamma(1.0, 0.001), ["LAM", "MAF"] => Gamma(1.0, 0.001), ["LAM", "SSA"] => Gamma(1.0, 0.001), ["LAM", "SIS"] => Gamma(2.0, 0.1), ["SAS", "USA"] => Gamma(1.0, 0.001), ["SAS", "CAN"] => Gamma(1.0, 0.001), ["SAS", "WEU"] => Gamma(1.0, 0.001), ["SAS", "JPK"] => Gamma(1.0, 0.001), ["SAS", "ANZ"] => Gamma(1.0, 0.001), ["SAS", "EEU"] => Gamma(1.0, 0.001), ["SAS", "FSU"] => Gamma(1.0, 0.001), ["SAS", "MDE"] => Gamma(1.0, 0.001), ["SAS", "CAM"] => Gamma(1.0, 0.001), ["SAS", "LAM"] => Gamma(1.0, 0.001), ["SAS", "SAS"] => Gamma(82.987950057818, 0.0109772228646444), ["SAS", "SEA"] => Gamma(1.0, 0.005), ["SAS", "CHI"] => Gamma(1.0, 0.001), ["SAS", "MAF"] => Gamma(1.0, 0.001), ["SAS", "SSA"] => Gamma(1.0, 0.001), ["SAS", "SIS"] => Gamma(2.0, 0.1), ["SEA", "USA"] => Gamma(1.0, 0.001), ["SEA", "CAN"] => Gamma(1.0, 0.001), ["SEA", "WEU"] => Gamma(1.0, 0.001), ["SEA", "JPK"] => Gamma(1.0, 0.001), ["SEA", "ANZ"] => Gamma(1.0, 0.001), ["SEA", "EEU"] => Gamma(1.0, 0.001), ["SEA", "FSU"] => Gamma(1.0, 0.001), ["SEA", "MDE"] => Gamma(1.0, 0.001), ["SEA", "CAM"] => Gamma(1.0, 0.001), ["SEA", "LAM"] => Gamma(1.0, 0.001), ["SEA", "SAS"] => Gamma(1.0, 0.005), ["SEA", "SEA"] => Gamma(82.987950057818, 0.0109772228646444), ["SEA", "CHI"] => Gamma(1.0, 0.005), ["SEA", "MAF"] => Gamma(1.0, 0.001), ["SEA", "SSA"] => Gamma(1.0, 0.001), ["SEA", "SIS"] => Gamma(2.0, 0.1), ["CHI", "USA"] => Gamma(1.0, 0.001), ["CHI", "CAN"] => Gamma(1.0, 0.001), ["CHI", "WEU"] => Gamma(1.0, 0.001), ["CHI", "JPK"] => Gamma(1.0, 0.001), ["CHI", "ANZ"] => Gamma(1.0, 0.001), ["CHI", "EEU"] => Gamma(1.0, 0.001), ["CHI", "FSU"] => Gamma(1.0, 0.001), ["CHI", "MDE"] => Gamma(1.0, 0.001), ["CHI", "CAM"] => Gamma(1.0, 0.001), ["CHI", "LAM"] => Gamma(1.0, 0.001), ["CHI", "SAS"] => Gamma(1.0, 0.001), ["CHI", "SEA"] => Gamma(1.0, 0.001), ["CHI", "CHI"] => Gamma(82.987950057818, 0.0109772228646444), ["CHI", "MAF"] => Gamma(1.0, 0.001), ["CHI", "SSA"] => Gamma(1.0, 0.001), ["CHI", "SIS"] => Gamma(1.0, 0.001), ["MAF", "USA"] => Gamma(1.0, 0.001), ["MAF", "CAN"] => Gamma(1.0, 0.001), ["MAF", "WEU"] => Gamma(1.0, 0.001), ["MAF", "JPK"] => Gamma(1.0, 0.001), ["MAF", "ANZ"] => Gamma(1.0, 0.001), ["MAF", "EEU"] => Gamma(1.0, 0.001), ["MAF", "FSU"] => Gamma(1.0, 0.001), ["MAF", "MDE"] => Gamma(1.0, 0.001), ["MAF", "CAM"] => Gamma(1.0, 0.001), ["MAF", "LAM"] => Gamma(1.0, 0.001), ["MAF", "SAS"] => Gamma(1.0, 0.001), ["MAF", "SEA"] => Gamma(1.0, 0.001), ["MAF", "CHI"] => Gamma(1.0, 0.001), ["MAF", "MAF"] => Gamma(82.987950057818, 0.0109772228646444), ["MAF", "SSA"] => Gamma(1.0, 0.005), ["MAF", "SIS"] => Gamma(1.0, 0.001), ["SSA", "USA"] => Gamma(1.0, 0.001), ["SSA", "CAN"] => Gamma(1.0, 0.001), ["SSA", "WEU"] => Gamma(1.0, 0.001), ["SSA", "JPK"] => Gamma(1.0, 0.001), ["SSA", "ANZ"] => Gamma(1.0, 0.001), ["SSA", "EEU"] => Gamma(1.0, 0.001), ["SSA", "FSU"] => Gamma(1.0, 0.001), ["SSA", "MDE"] => Gamma(1.0, 0.001), ["SSA", "CAM"] => Gamma(1.0, 0.001), ["SSA", "LAM"] => Gamma(1.0, 0.001), ["SSA", "SAS"] => Gamma(1.0, 0.001), ["SSA", "SEA"] => Gamma(1.0, 0.001), ["SSA", "CHI"] => Gamma(1.0, 0.001), ["SSA", "MAF"] => Gamma(1.0, 0.001), ["SSA", "SSA"] => Gamma(82.987950057818, 0.0109772228646444), ["SSA", "SIS"] => Gamma(1.0, 0.001), ["SIS", "USA"] => Gamma(1.0, 0.001), ["SIS", "CAN"] => Gamma(1.0, 0.001), ["SIS", "WEU"] => Gamma(1.0, 0.001), ["SIS", "JPK"] => Gamma(1.0, 0.001), ["SIS", "ANZ"] => Gamma(1.0, 0.001), ["SIS", "EEU"] => Gamma(1.0, 0.001), ["SIS", "FSU"] => Gamma(1.0, 0.001), ["SIS", "MDE"] => Gamma(1.0, 0.001), ["SIS", "CAM"] => Gamma(1.0, 0.001), ["SIS", "LAM"] => Gamma(1.0, 0.001), ["SIS", "SAS"] => Gamma(1.0, 0.001), ["SIS", "SEA"] => Gamma(1.0, 0.001), ["SIS", "CHI"] => Gamma(1.0, 0.001), ["SIS", "MAF"] => Gamma(1.0, 0.001), ["SIS", "SSA"] => Gamma(1.0, 0.001), ["SIS", "SIS"] => Gamma(1.0, 0.1)] + emissions.n2oadd = Normal(0.0, 0.0059) + impactsealevelrise.pc = ["USA" => Truncated(Normal(95.3, 95.3), 0.0, Inf), "CAN" => Truncated(Normal(13.0, 13.0), 0.0, Inf), "WEU" => Truncated(Normal(153.9, 52.6), 0.0, Inf), "JPK" => Truncated(Normal(75.5, 54.7), 0.0, Inf), "ANZ" => Truncated(Normal(36.6, 26.8), 0.0, Inf), "EEU" => Truncated(Normal(3.1, 1.7), 0.0, Inf), "FSU" => Truncated(Normal(54.0, 54.0), 0.0, Inf), "MDE" => Truncated(Normal(18.9, 9.6), 0.0, Inf), "CAM" => Truncated(Normal(42.3, 33.8), 0.0, Inf), "LAM" => Truncated(Normal(117.6, 79.0), 0.0, Inf), "SAS" => Truncated(Normal(172.0, 153.6), 0.0, Inf), "SEA" => Truncated(Normal(169.7, 84.4), 0.0, Inf), "CHI" => Truncated(Normal(118.4, 118.4), 0.0, Inf), "MAF" => Truncated(Normal(19.0, 10.2), 0.0, Inf), "SSA" => Truncated(Normal(84.3, 38.3), 0.0, Inf), "SIS" => Truncated(Normal(16.0, 5.7), 0.0, Inf)] + scenariouncertainty.pgadd = ["USA" => Normal(0.0, 0.00625), "CAN" => Normal(0.0, 0.00625), "WEU" => Normal(0.0, 0.00625), "JPK" => Normal(0.0, 0.01875), "ANZ" => Normal(0.0, 0.01875), "EEU" => Normal(0.0, 0.00625), "FSU" => Normal(0.0, 0.00625), "MDE" => Normal(0.0, 0.09375), "CAM" => Normal(0.0, 0.0375), "LAM" => Normal(0.0, 0.0375), "SAS" => Normal(0.0, 0.09375), "SEA" => Normal(0.0, 0.09375), "CHI" => Normal(0.0, 0.01875), "MAF" => Normal(0.0, 0.15625), "SSA" => Normal(0.0, 0.15625), "SIS" => Normal(0.0, 0.0375)] + socioeconomic.plusel = Truncated(Normal(0.25, 0.08), 0.0, Inf) + impactcardiovascularrespiratory.rlbm = ["USA" => Normal(0.9452, 6.7337), "CAN" => Normal(-1.9284, 6.7337), "WEU" => Normal(-0.765, 2.4863), "JPK" => Normal(0.4185, 5.813), "ANZ" => Normal(0.2579, 5.7279), "EEU" => Normal(-1.2946, 2.9883), "FSU" => Normal(1.5277, 6.7337), "MDE" => Normal(5.6711, 3.069), "CAM" => Normal(3.8894, 5.0789), "LAM" => Normal(1.0893, 3.6563), "SAS" => Normal(10.2485, 5.1264), "SEA" => Normal(4.8562, 3.2809), "CHI" => Normal(4.4083, 6.5634), "MAF" => Normal(5.198, 3.7408), "SSA" => Normal(3.6196, 1.8681), "SIS" => Normal(4.1354, 2.033)] + impactcardiovascularrespiratory.rlin = Truncated(Normal(0.001583, 0.000457), 0.0, Inf) + impactcardiovascularrespiratory.rqbm = ["USA" => Normal(0.4342, 5.5281), "CAN" => Normal(0.4342, 5.5281), "WEU" => Normal(0.4341, 2.0412), "JPK" => Normal(0.4342, 4.7723), "ANZ" => Normal(0.4342, 4.7024), "EEU" => Normal(0.4342, 2.4533), "FSU" => Normal(0.4342, 5.5281), "MDE" => Normal(0.4194, 2.5196), "CAM" => Normal(0.4342, 4.1696), "LAM" => Normal(0.4335, 3.0017), "SAS" => Normal(0.4342, 4.2086), "SEA" => Normal(0.4339, 2.6935), "CHI" => Normal(0.4319, 5.3883), "MAF" => Normal(0.4341, 3.0711), "SSA" => Normal(0.411, 1.5337), "SIS" => Normal(0.2522, 1.669)] + ocean.seas = Gamma(6.0, 0.4) + emissions.sf6add = Normal(0.0, 0.08) + impactvectorbornediseases.smch = ["USA" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "CAN" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "WEU" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "JPK" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "ANZ" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "EEU" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "FSU" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "MDE" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "CAM" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "LAM" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "SAS" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "SEA" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "CHI" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "MAF" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "SSA" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0), "SIS" => Truncated(Normal(-0.1149, 0.0614), -Inf, 0.0)] + impactvectorbornediseases.smnl = Truncated(Normal(1.0, 0.5), 0.0, Inf) + impactbiodiversity.spbm = Truncated(Normal(50.0, 50.0), 0.0, Inf) + emissions.taxmp = ["USA" => Gamma(5.8284, 0.2071), "CAN" => Gamma(5.8284, 0.2071), "WEU" => Gamma(5.8284, 0.2071), "JPK" => Gamma(5.8284, 0.2071), "ANZ" => Gamma(5.8284, 0.2071), "EEU" => Gamma(5.8284, 0.2071), "FSU" => Gamma(5.8284, 0.2071), "MDE" => Gamma(5.8284, 0.2071), "CAM" => Gamma(5.8284, 0.2071), "LAM" => Gamma(5.8284, 0.2071), "SAS" => Gamma(5.8284, 0.2071), "SEA" => Gamma(5.8284, 0.2071), "CHI" => Gamma(5.8284, 0.2071), "MAF" => Gamma(5.8284, 0.2071), "SSA" => Gamma(5.8284, 0.2071), "SIS" => Gamma(5.8284, 0.2071)] + climateco2cycle.terrco2sens = Gamma(4.92255, 662.834125760029) + impactbiodiversity.valinc = ["USA" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "CAN" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "WEU" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "JPK" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "ANZ" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "EEU" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "FSU" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "MDE" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "CAM" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "LAM" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "SAS" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "SEA" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "CHI" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "MAF" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "SSA" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf), "SIS" => Truncated(Normal(30000.0, 10000.0), 0.0, Inf)] + impactvectorbornediseases.vbel = Truncated(Normal(-2.65, 0.69), -Inf, 0.0) + vslvmorb.vmorbbm = Truncated(Normal(19970.090515545, 29955.1357733176), 0.0, Inf) + vslvmorb.vmorbel = Truncated(Normal(1.0, 0.2), 0.0, Inf) + vslvmorb.vslbm = Truncated(Normal(4.99252262888626e6, 2.49626131444313e6), 0.0, Inf) + vslvmorb.vslel = Truncated(Normal(1.0, 0.2), 0.0, Inf) + impactwaterresources.watechrate = Truncated(Normal(0.005, 0.005), 0.0, Inf) + impactsealevelrise.wlbm = ["USA" => Truncated(Normal(11400.0, 5700.0), 0.0, Inf), "WEU" => Truncated(Normal(3210.0, 1335.0), 0.0, Inf), "JPK" => Truncated(Normal(573.0, 573.0), 0.0, Inf), "ANZ" => Truncated(Normal(256.0, 256.0), 0.0, Inf), "EEU" => Truncated(Normal(38.0, 18.0), 0.0, Inf), "CAM" => Truncated(Normal(14775.0, 11171.0), 0.0, Inf), "LAM" => Truncated(Normal(27234.0, 19016.0), 0.0, Inf), "SAS" => Truncated(Normal(14303.0, 6005.0), 0.0, Inf), "SEA" => Truncated(Normal(50885.0, 29599.0), 0.0, Inf), "CHI" => Truncated(Normal(5879.0, 5879.0), 0.0, Inf), "MAF" => Truncated(Normal(2649.0, 1989.0), 0.0, Inf), "SSA" => Truncated(Normal(27847.0, 9024.0), 0.0, Inf), "SIS" => Truncated(Normal(1528.0, 1067.0), 0.0, Inf)] + impactsealevelrise.wmbm = ["USA" => Truncated(Normal(789.0, 8344.0), 0.0, Inf), "WEU" => Truncated(Normal(903.0, 2188.0), 0.0, Inf), "JPK" => Truncated(Normal(7.0, 815.0), 0.0, Inf), "ANZ" => Truncated(Normal(183.0, 508.0), 0.0, Inf), "EEU" => Truncated(Normal(0.0, 26.0), 0.0, Inf), "CAM" => Truncated(Normal(238.0, 15832.0), 0.0, Inf), "LAM" => Truncated(Normal(4748.0, 28997.0), 0.0, Inf), "SAS" => Truncated(Normal(0.0, 8492.0), 0.0, Inf), "SEA" => Truncated(Normal(4.0, 41860.0), 0.0, Inf), "CHI" => Truncated(Normal(1779.0, 9654.0), 0.0, Inf), "MAF" => Truncated(Normal(0.0, 2814.0), 0.0, Inf), "SSA" => Truncated(Normal(345.0, 12768.0), 0.0, Inf), "SIS" => Truncated(Normal(169.0, 1516.0), 0.0, Inf)] + impactwaterresources.wrbm = ["USA" => Normal(-0.00065, 0.00065), "CAN" => Normal(-0.00057, 0.00057), "WEU" => Normal(-0.00027, 0.00027), "JPK" => Normal(3.0e-6, 3.0e-6), "ANZ" => Normal(3.0e-6, 3.0e-6), "EEU" => Normal(-0.00697, 0.00697), "FSU" => Normal(-0.02754, 0.02754), "MDE" => Normal(-0.00133, 0.00133), "CAM" => Normal(-0.0013, 0.0013), "LAM" => Normal(-0.0014, 0.0014), "SAS" => Normal(-0.00156, 0.00156), "SEA" => Normal(-0.00314, 0.00314), "CHI" => Normal(0.00569, 0.00569), "MAF" => Normal(-0.00902, 0.00902), "SSA" => Normal(-0.0036, 0.0036), "SIS" => Normal(-0.0013, 0.0013)] + impactwaterresources.wrel = Truncated(Normal(0.85, 0.15), 0.0, 1.0) + impactwaterresources.wrnl = Truncated(Normal(1.0, 0.5), 0.0, Inf) + impactwaterresources.wrpl = Truncated(Normal(0.85, 0.15), 0.0, Inf) + impactsealevelrise.wvbm = Truncated(Normal(0.00588, 0.003927), 0.0, Inf) + impactsealevelrise.wvel = Truncated(Normal(1.16, 0.46), 0.0, Inf) + impactsealevelrise.wvpdl = Truncated(Normal(0.47, 0.12), 0.0, 1.0) + impactsealevelrise.wvsl = Truncated(Normal(-0.11, 0.05), -1.0, 0.0) end return fund_iwg_mcs @@ -158,14 +158,14 @@ function fund_post_trial_func(mcs::SimulationInstance, trialnum::Int, ntimesteps damages2 = marginal[:impactaggregation, :loss] ./ marginal[:socioeconomic, :income] .* base[:socioeconomic, :income] marginaldamages = (damages2 .- damages1) * 1e-7 - global_marginaldamages = sum(marginaldamages, dims = 2) # sum across regions + global_marginaldamages = sum(marginaldamages, dims=2) # sum across regions function _compute_scc(pyear, marginaldamages, rates) scc = zeros(length(rates)) p_idx = MimiFUND.getindexfromyear(pyear) for (i, rate) in enumerate(rates) - discount_factor = [(1/(1 + rate)) ^ (t - p_idx) for t in p_idx:final] + discount_factor = [(1 / (1 + rate))^(t - p_idx) for t in p_idx:final] scc[i] = sum(marginaldamages[p_idx:final] .* discount_factor) end return scc diff --git a/src/montecarlo/PAGE_mcs.jl b/src/montecarlo/PAGE_mcs.jl index ee6d718..cc1c166 100644 --- a/src/montecarlo/PAGE_mcs.jl +++ b/src/montecarlo/PAGE_mcs.jl @@ -41,7 +41,7 @@ function get_page_mcs() co2cycle.res_CO2atmlifetime = TriangularDist(50, 100, 70) co2cycle.ccf_CO2feedback = TriangularDist(4, 15, 10) co2cycle.ccfmax_maxCO2feedback = TriangularDist(30, 80, 50) - co2cycle.stay_fractionCO2emissionsinatm = TriangularDist(0.25,0.35,0.3) + co2cycle.stay_fractionCO2emissionsinatm = TriangularDist(0.25, 0.35, 0.3) # SulphateForcing SulphateForcing.d_sulphateforcingbase = TriangularDist(-0.8, -0.2, -0.4) @@ -76,7 +76,7 @@ function get_page_mcs() # SLRDamages SLRDamages.scal_calibrationSLR = TriangularDist(0.45, 0.55, .5) - #SLRDamages.iben_SLRInitialBenefit = TriangularDist(0, 0, 0) # only usable if lb <> ub + # SLRDamages.iben_SLRInitialBenefit = TriangularDist(0, 0, 0) # only usable if lb <> ub SLRDamages.W_SatCalibrationSLR = TriangularDist(.5, 1.5, 1) SLRDamages.pow_SLRImpactFxnExponent = TriangularDist(.5, 1, .7) SLRDamages.ipow_SLRIncomeFxnExponent = TriangularDist(-.4, -.2, -.3) @@ -111,32 +111,32 @@ function get_page_mcs() # shared parameter linked to components: AdaptationCosts, AbatementCosts automult_autonomouschange = TriangularDist(0.5, 0.8, 0.65) - #the following variables need to be set, but set the same in all 4 abatement cost components - #note that for these regional variables, the first region is the focus region (EU), which is set in the preceding code, and so is always one for these variables + # the following variables need to be set, but set the same in all 4 abatement cost components + # note that for these regional variables, the first region is the focus region (EU), which is set in the preceding code, and so is always one for these variables - emitf_uncertaintyinBAUemissfactor["USA"] = TriangularDist(0.8,1.2,1.0) - emitf_uncertaintyinBAUemissfactor["OECD"] = TriangularDist(0.8,1.2,1.0) - emitf_uncertaintyinBAUemissfactor["USSR"] = TriangularDist(0.65,1.35,1.0) - emitf_uncertaintyinBAUemissfactor["China"] = TriangularDist(0.5,1.5,1.0) - emitf_uncertaintyinBAUemissfactor["SEAsia"] = TriangularDist(0.5,1.5,1.0) - emitf_uncertaintyinBAUemissfactor["Africa"] = TriangularDist(0.5,1.5,1.0) - emitf_uncertaintyinBAUemissfactor["LatAmerica"] = TriangularDist(0.5,1.5,1.0) + emitf_uncertaintyinBAUemissfactor["USA"] = TriangularDist(0.8, 1.2, 1.0) + emitf_uncertaintyinBAUemissfactor["OECD"] = TriangularDist(0.8, 1.2, 1.0) + emitf_uncertaintyinBAUemissfactor["USSR"] = TriangularDist(0.65, 1.35, 1.0) + emitf_uncertaintyinBAUemissfactor["China"] = TriangularDist(0.5, 1.5, 1.0) + emitf_uncertaintyinBAUemissfactor["SEAsia"] = TriangularDist(0.5, 1.5, 1.0) + emitf_uncertaintyinBAUemissfactor["Africa"] = TriangularDist(0.5, 1.5, 1.0) + emitf_uncertaintyinBAUemissfactor["LatAmerica"] = TriangularDist(0.5, 1.5, 1.0) - q0f_negativecostpercentagefactor["USA"] = TriangularDist(0.75,1.5,1.0) - q0f_negativecostpercentagefactor["OECD"] = TriangularDist(0.75,1.25,1.0) - q0f_negativecostpercentagefactor["USSR"] = TriangularDist(0.4,1.0,0.7) - q0f_negativecostpercentagefactor["China"] = TriangularDist(0.4,1.0,0.7) - q0f_negativecostpercentagefactor["SEAsia"] = TriangularDist(0.4,1.0,0.7) - q0f_negativecostpercentagefactor["Africa"] = TriangularDist(0.4,1.0,0.7) - q0f_negativecostpercentagefactor["LatAmerica"] = TriangularDist(0.4,1.0,0.7) + q0f_negativecostpercentagefactor["USA"] = TriangularDist(0.75, 1.5, 1.0) + q0f_negativecostpercentagefactor["OECD"] = TriangularDist(0.75, 1.25, 1.0) + q0f_negativecostpercentagefactor["USSR"] = TriangularDist(0.4, 1.0, 0.7) + q0f_negativecostpercentagefactor["China"] = TriangularDist(0.4, 1.0, 0.7) + q0f_negativecostpercentagefactor["SEAsia"] = TriangularDist(0.4, 1.0, 0.7) + q0f_negativecostpercentagefactor["Africa"] = TriangularDist(0.4, 1.0, 0.7) + q0f_negativecostpercentagefactor["LatAmerica"] = TriangularDist(0.4, 1.0, 0.7) - cmaxf_maxcostfactor["USA"] = TriangularDist(0.8,1.2,1.0) - cmaxf_maxcostfactor["OECD"] = TriangularDist(1.0,1.5,1.2) - cmaxf_maxcostfactor["USSR"] = TriangularDist(0.4,1.0,0.7) - cmaxf_maxcostfactor["China"] = TriangularDist(0.8,1.2,1.0) - cmaxf_maxcostfactor["SEAsia"] = TriangularDist(1,1.5,1.2) - cmaxf_maxcostfactor["Africa"] = TriangularDist(1,1.5,1.2) - cmaxf_maxcostfactor["LatAmerica"] = TriangularDist(0.4,1.0,0.7) + cmaxf_maxcostfactor["USA"] = TriangularDist(0.8, 1.2, 1.0) + cmaxf_maxcostfactor["OECD"] = TriangularDist(1.0, 1.5, 1.2) + cmaxf_maxcostfactor["USSR"] = TriangularDist(0.4, 1.0, 0.7) + cmaxf_maxcostfactor["China"] = TriangularDist(0.8, 1.2, 1.0) + cmaxf_maxcostfactor["SEAsia"] = TriangularDist(1, 1.5, 1.2) + cmaxf_maxcostfactor["Africa"] = TriangularDist(1, 1.5, 1.2) + cmaxf_maxcostfactor["LatAmerica"] = TriangularDist(0.4, 1.0, 0.7) cf_costregional["USA"] = TriangularDist(0.6, 1, 0.8) cf_costregional["OECD"] = TriangularDist(0.4, 1.2, 0.8) @@ -147,48 +147,48 @@ function get_page_mcs() cf_costregional["LatAmerica"] = TriangularDist(0.4, 0.8, 0.6) # Other - q0propmult_cutbacksatnegativecostinfinalyear = TriangularDist(0.3,1.2,0.7) - qmax_minus_q0propmult_maxcutbacksatpositivecostinfinalyear = TriangularDist(1,1.5,1.3) - c0mult_mostnegativecostinfinalyear = TriangularDist(0.5,1.2,0.8) - curve_below_curvatureofMACcurvebelowzerocost = TriangularDist(0.25,0.8,0.45) - curve_above_curvatureofMACcurveabovezerocost = TriangularDist(0.1,0.7,0.4) - cross_experiencecrossoverratio = TriangularDist(0.1,0.3,0.2) - learn_learningrate = TriangularDist(0.05,0.35,0.2) + q0propmult_cutbacksatnegativecostinfinalyear = TriangularDist(0.3, 1.2, 0.7) + qmax_minus_q0propmult_maxcutbacksatpositivecostinfinalyear = TriangularDist(1, 1.5, 1.3) + c0mult_mostnegativecostinfinalyear = TriangularDist(0.5, 1.2, 0.8) + curve_below_curvatureofMACcurvebelowzerocost = TriangularDist(0.25, 0.8, 0.45) + curve_above_curvatureofMACcurveabovezerocost = TriangularDist(0.1, 0.7, 0.4) + cross_experiencecrossoverratio = TriangularDist(0.1, 0.3, 0.2) + learn_learningrate = TriangularDist(0.05, 0.35, 0.2) # NOTE: the below can probably be resolved into unique, unshared parameters with the same name # in the new Mimi paradigm of shared and unshared parameters, but for now this will # continue to work! # AbatementCosts - AbatementCostParametersCO2_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50,75,0) - AbatementCostParametersCH4_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-25,100,0) - AbatementCostParametersN2O_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50,50,0) - AbatementCostParametersLin_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50,50,0) + AbatementCostParametersCO2_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50, 75, 0) + AbatementCostParametersCH4_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-25, 100, 0) + AbatementCostParametersN2O_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50, 50, 0) + AbatementCostParametersLin_emit_UncertaintyinBAUEmissFactorinFocusRegioninFinalYear = TriangularDist(-50, 50, 0) - AbatementCostParametersCO2_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0,40,20) - AbatementCostParametersCH4_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0,20,10) - AbatementCostParametersN2O_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0,20,10) - AbatementCostParametersLin_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0,20,10) + AbatementCostParametersCO2_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0, 40, 20) + AbatementCostParametersCH4_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0, 20, 10) + AbatementCostParametersN2O_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0, 20, 10) + AbatementCostParametersLin_q0propinit_CutbacksinNegativeCostinFocusRegioninBaseYear = TriangularDist(0, 20, 10) - AbatementCostParametersCO2_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-400,-100,-200) - AbatementCostParametersCH4_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-8000,-1000,-4000) - AbatementCostParametersN2O_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-15000,0,-7000) - AbatementCostParametersLin_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-400,-100,-200) + AbatementCostParametersCO2_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-400, -100, -200) + AbatementCostParametersCH4_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-8000, -1000, -4000) + AbatementCostParametersN2O_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-15000, 0, -7000) + AbatementCostParametersLin_c0init_MostNegativeCostCutbackinBaseYear = TriangularDist(-400, -100, -200) - AbatementCostParametersCO2_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(60,80,70) - AbatementCostParametersCH4_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(35,70,50) - AbatementCostParametersN2O_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(35,70,50) - AbatementCostParametersLin_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(60,80,70) + AbatementCostParametersCO2_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(60, 80, 70) + AbatementCostParametersCH4_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(35, 70, 50) + AbatementCostParametersN2O_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(35, 70, 50) + AbatementCostParametersLin_qmaxminusq0propinit_MaxCutbackCostatPositiveCostinBaseYear = TriangularDist(60, 80, 70) - AbatementCostParametersCO2_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(100,700,400) - AbatementCostParametersCH4_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(3000,10000,6000) - AbatementCostParametersN2O_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(2000,60000,20000) - AbatementCostParametersLin_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(100,600,300) + AbatementCostParametersCO2_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(100, 700, 400) + AbatementCostParametersCH4_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(3000, 10000, 6000) + AbatementCostParametersN2O_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(2000, 60000, 20000) + AbatementCostParametersLin_cmaxinit_MaximumCutbackCostinFocusRegioninBaseYear = TriangularDist(100, 600, 300) - AbatementCostParametersCO2_ies_InitialExperienceStockofCutbacks = TriangularDist(100000,200000,150000) - AbatementCostParametersCH4_ies_InitialExperienceStockofCutbacks = TriangularDist(1500,2500,2000) - AbatementCostParametersN2O_ies_InitialExperienceStockofCutbacks = TriangularDist(30,80,50) - AbatementCostParametersLin_ies_InitialExperienceStockofCutbacks = TriangularDist(1500,2500,2000) + AbatementCostParametersCO2_ies_InitialExperienceStockofCutbacks = TriangularDist(100000, 200000, 150000) + AbatementCostParametersCH4_ies_InitialExperienceStockofCutbacks = TriangularDist(1500, 2500, 2000) + AbatementCostParametersN2O_ies_InitialExperienceStockofCutbacks = TriangularDist(30, 80, 50) + AbatementCostParametersLin_ies_InitialExperienceStockofCutbacks = TriangularDist(1500, 2500, 2000) # AdaptationCosts AdaptiveCostsSeaLevel_cp_costplateau_eu = TriangularDist(0.01, 0.04, 0.02) @@ -216,8 +216,8 @@ function page_scenario_func(mcs::SimulationInstance, tup::Tuple) base, marginal = mcs.models update_param!(base, :scenario_num, scenario_num) update_param!(marginal, :scenario_num, scenario_num) - update_param!(base, :ptp_timepreference, rate*100) # update the pure rate of time preference for this scenario's discount rate - update_param!(marginal, :ptp_timepreference, rate*100) # update the pure rate of time preference for this scenario's discount rate + update_param!(base, :ptp_timepreference, rate * 100) # update the pure rate of time preference for this scenario's discount rate + update_param!(marginal, :ptp_timepreference, rate * 100) # update the pure rate of time preference for this scenario's discount rate Mimi.build!(base) Mimi.build!(marginal) @@ -227,7 +227,7 @@ function page_post_trial_func(mcs::SimulationInstance, trialnum::Int, ntimesteps # Access the models base, marginal = mcs.models - + # Unpack the payload object discount_rates, discount_factors, discontinuity_mismatch, gas, perturbation_years, SCC_values, SCC_values_domestic, md_values = Mimi.payload(mcs) @@ -237,7 +237,7 @@ function page_post_trial_func(mcs::SimulationInstance, trialnum::Int, ntimesteps td_base_domestic = sum(base[:EquityWeighting, :addt_equityweightedimpact_discountedaggregated][:, 2]) # US is the second region end EMUC = base[:EquityWeighting, :emuc_utilityconvexity] - UDFT_base = DF .* (base[:EquityWeighting, :cons_percap_consumption][:, 1] / base[:EquityWeighting, :cons_percap_consumption_0][1]) .^ (-EMUC) + UDFT_base = DF .* (base[:EquityWeighting, :cons_percap_consumption][:, 1] / base[:EquityWeighting, :cons_percap_consumption_0][1]).^(-EMUC) for (j, pyear) in enumerate(perturbation_years) idx = getpageindexfromyear(pyear) @@ -264,7 +264,7 @@ function page_post_trial_func(mcs::SimulationInstance, trialnum::Int, ntimesteps marg_impacts = marginal[:EquityWeighting, :wit_equityweightedimpact] marg_damages = (marg_impacts .- base_impacts) ./ (gas == :CO2 ? 100_000 : 1) .* page_inflator - md_values[j, scenario_num, :, trialnum] = sum(marg_damages, dims = 2) # sum along second dimension to get global values + md_values[j, scenario_num, :, trialnum] = sum(marg_damages, dims=2) # sum along second dimension to get global values end end end diff --git a/src/montecarlo/run_scc_mcs.jl b/src/montecarlo/run_scc_mcs.jl index 022defa..ba2b183 100644 --- a/src/montecarlo/run_scc_mcs.jl +++ b/src/montecarlo/run_scc_mcs.jl @@ -36,16 +36,16 @@ If `save_md` equals `true`, then global undiscounted marginal damages from each the simulation will be saved in a subdirectory "output/marginal_damages". """ function run_scc_mcs(model::model_choice; - gas::Union{Symbol, Nothing} = nothing, - trials::Int = 10000, - perturbation_years::Vector{Int} = _default_perturbation_years, - discount_rates::Vector{Float64} = _default_discount_rates, - domestic::Bool = false, - output_dir::Union{String, Nothing} = nothing, - save_trials::Bool = false, - tables::Bool = true, - drop_discontinuities::Bool = false, - save_md::Bool = false) + gas::Union{Symbol,Nothing}=nothing, + trials::Int=10000, + perturbation_years::Vector{Int}=_default_perturbation_years, + discount_rates::Vector{Float64}=_default_discount_rates, + domestic::Bool=false, + output_dir::Union{String,Nothing}=nothing, + save_trials::Bool=false, + tables::Bool=true, + drop_discontinuities::Bool=false, + save_md::Bool=false) # Check the gas if gas === nothing @@ -65,7 +65,7 @@ function run_scc_mcs(model::model_choice; scenario_args = [:scenario => scenarios, :rate => discount_rates] last_idx = _default_horizon - 2005 + 1 - discount_factors = Dict([rate => [(1 + rate) ^ y for y in 0:last_idx-1] for rate in discount_rates]) # precompute discount factors + discount_factors = Dict([rate => [(1 + rate)^y for y in 0:last_idx - 1] for rate in discount_rates]) # precompute discount factors nyears = length(dice_years) # Run the full length to 2405, but nothing past 2300 gets used for the SCC model_years = dice_years @@ -106,7 +106,7 @@ function run_scc_mcs(model::model_choice; scenario_args = [:scenarios => scenarios, :discount_rates => discount_rates] # Precompute discount factors for each of the discount rates - discount_factors = [[(1 / (1 + r)) ^ (Y - 2000) for Y in page_years] for r in discount_rates] + discount_factors = [[(1 / (1 + r))^(Y - 2000) for Y in page_years] for r in discount_rates] model_years = page_years nyears = length(page_years) @@ -116,7 +116,7 @@ function run_scc_mcs(model::model_choice; post_trial_func = page_post_trial_func # Set the base and marginal models - base, marginal = get_marginal_page_models(scenario_choice = USG1, gas = gas) # Need to set a scenario so the model can be built, but the scenarios will change in the simulation + base, marginal = get_marginal_page_models(scenario_choice=USG1, gas=gas) # Need to set a scenario so the model can be built, but the scenarios will change in the simulation models = [base, marginal] end @@ -131,19 +131,19 @@ function run_scc_mcs(model::model_choice; all_years = copy(perturbation_years) # preserve a copy of the original desired SCC years _first_idx = findlast(y -> y <= minimum(all_years), model_years) _last_idx = findfirst(y -> y >= maximum(all_years), model_years) - perturbation_years = model_years[_first_idx : _last_idx] # figure out which years of the model's time index we need to use to cover all desired perturbation years + perturbation_years = model_years[_first_idx:_last_idx] # figure out which years of the model's time index we need to use to cover all desired perturbation years end # For each run, this array will store whether there is a discrepency between the base and marginal models triggering the discontinuity damages in different timesteps if model == PAGE - discontinuity_mismatch = Array{Bool, 4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) + discontinuity_mismatch = Array{Bool,4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) push!(payload, discontinuity_mismatch) end # Make an array to hold all calculated scc values - SCC_values = Array{Float64, 4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) + SCC_values = Array{Float64,4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) if domestic - SCC_values_domestic = Array{Float64, 4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) + SCC_values_domestic = Array{Float64,4}(undef, trials, length(perturbation_years), length(scenarios), length(discount_rates)) else SCC_values_domestic = nothing end @@ -153,7 +153,7 @@ function run_scc_mcs(model::model_choice; if model == PAGE && discount_rates != [0.] error("Cannot save undiscounted marginal damages for PAGE unless `discount_rates = [0.]`") end - md_values = Array{Float64, 4}(undef, length(perturbation_years), length(scenarios), length(model_years), trials) + md_values = Array{Float64,4}(undef, length(perturbation_years), length(scenarios), length(model_years), trials) else md_values = nothing end @@ -167,13 +167,13 @@ function run_scc_mcs(model::model_choice; # Run the simulation sim_results = run(mcs, models, trials; - trials_output_filename = trials_filepath, - ntimesteps = nyears, - scenario_func = scenario_func, - scenario_args = scenario_args, - post_trial_func = post_trial_func + trials_output_filename=trials_filepath, + ntimesteps=nyears, + scenario_func=scenario_func, + scenario_args=scenario_args, + post_trial_func=post_trial_func ) - SCC_values, SCC_values_domestic, md_values = Mimi.payload(sim_results)[end-2:end] + SCC_values, SCC_values_domestic, md_values = Mimi.payload(sim_results)[end - 2:end] # Save the marginal damage matrices if save_md @@ -189,14 +189,14 @@ function run_scc_mcs(model::model_choice; # generic interpolation if user requested SCC values for years in between model_years if _need_to_interpolate - new_SCC_values = Array{Float64, 4}(undef, trials, length(all_years), length(scenarios), length(discount_rates)) + new_SCC_values = Array{Float64,4}(undef, trials, length(all_years), length(scenarios), length(discount_rates)) for i in 1:trials, j in 1:length(scenarios), k in 1:length(discount_rates) new_SCC_values[i, :, j, k] = _interpolate(SCC_values[i, :, j, k], perturbation_years, all_years) end SCC_values = new_SCC_values if domestic - new_domestic_values = Array{Float64, 4}(undef, trials, length(all_years), length(scenarios), length(discount_rates)) + new_domestic_values = Array{Float64,4}(undef, trials, length(all_years), length(scenarios), length(discount_rates)) for i in 1:trials, j in 1:length(scenarios), k in 1:length(discount_rates) new_domestic_values[i, :, j, k] = _interpolate(SCC_values_domestic[i, :, j, k], perturbation_years, all_years) end @@ -204,7 +204,7 @@ function run_scc_mcs(model::model_choice; end # reset perturbation years to all user requested years, unless model is PAGE, for which this is done below - if model != PAGE + if model != PAGE perturbation_years = all_years end end @@ -227,7 +227,7 @@ function run_scc_mcs(model::model_choice; # has the same 4-D array structure as the SCC values, so can use the same function to save them to files write_scc_values(discontinuity_mismatch, disc_dir, perturbation_years, discount_rates) - disc_sum = dropdims(sum(discontinuity_mismatch, dims=(1,3)), dims=(1,3)) # summary table of how many occured (rows are perturbation years, columns are discount rates) + disc_sum = dropdims(sum(discontinuity_mismatch, dims=(1, 3)), dims=(1, 3)) # summary table of how many occured (rows are perturbation years, columns are discount rates) writedlm(joinpath(disc_dir, "discontinuity_summary.csv"), disc_sum, ',') end diff --git a/test/runtests.jl b/test/runtests.jl index 050fa88..8904ea9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2,10 +2,10 @@ using Test @testset "MimiIWG" begin -using MimiIWG + using MimiIWG -include("test_DICE.jl") -include("test_FUND.jl") -include("test_PAGE.jl") + include("test_DICE.jl") + include("test_FUND.jl") + include("test_PAGE.jl") end \ No newline at end of file diff --git a/test/test_DICE.jl b/test/test_DICE.jl index a55f20a..bbcd760 100644 --- a/test/test_DICE.jl +++ b/test/test_DICE.jl @@ -1,7 +1,7 @@ using ExcelReaders using MimiIWG using Test -using XLSX: readxlsx +using XLSX:readxlsx @testset "DICE" begin @@ -13,11 +13,11 @@ using XLSX: readxlsx md = MimiIWG.get_marginaldamages(DICE, MimiIWG.scenarios[1]) scc1 = MimiIWG.compute_scc(DICE, MimiIWG.scenarios[1]) - scc2 = MimiIWG.compute_scc(DICE, MimiIWG.scenarios[1], domestic = true) + scc2 = MimiIWG.compute_scc(DICE, MimiIWG.scenarios[1], domestic=true) @test scc2 == 0.1 * scc1 tmp_dir = joinpath(@__DIR__, "tmp") - MimiIWG.run_scc_mcs(DICE, trials=2, output_dir = tmp_dir, domestic = true) + MimiIWG.run_scc_mcs(DICE, trials=2, output_dir=tmp_dir, domestic=true) rm(tmp_dir, recursive=true) end @@ -66,7 +66,7 @@ using XLSX: readxlsx end end end - + end @testset "Deterministic SC-N2O validation" begin diff --git a/test/test_FUND.jl b/test/test_FUND.jl index 7d2e2ec..0ee6424 100644 --- a/test/test_FUND.jl +++ b/test/test_FUND.jl @@ -15,15 +15,15 @@ _atol = 1e-3 run(m) md1 = MimiIWG.get_marginaldamages(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0.) - md2 = MimiIWG.get_marginaldamages(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0., regional = true) + md2 = MimiIWG.get_marginaldamages(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0., regional=true) scc1 = MimiIWG.compute_scc(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0.03) - scc2 = MimiIWG.compute_scc(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0.03, domestic = true) + scc2 = MimiIWG.compute_scc(FUND, MimiIWG.scenarios[1], gas=:CO2, year=2020, discount=0.03, domestic=true) @test scc2 < scc1 # test global SCC is larger than domestic SCC # Test monte carlo simulation runs without error tmp_dir = joinpath(@__DIR__, "tmp") - MimiIWG.run_scc_mcs(FUND, gas=:CO2, trials=2, output_dir = tmp_dir, domestic=true) + MimiIWG.run_scc_mcs(FUND, gas=:CO2, trials=2, output_dir=tmp_dir, domestic=true) rm(tmp_dir, recursive=true) end @@ -46,7 +46,7 @@ _atol = 1e-3 idx += 1 end end - end + end # Methane @testset "Deterministic SC-CH4 validation" begin diff --git a/test/test_PAGE.jl b/test/test_PAGE.jl index c821ad2..442801e 100644 --- a/test/test_PAGE.jl +++ b/test/test_PAGE.jl @@ -3,28 +3,28 @@ using DelimitedFiles @testset "PAGE" begin -@testset "API" begin + @testset "API" begin - m = MimiIWG.get_model(PAGE, MimiIWG.scenarios[1]) - run(m) + m = MimiIWG.get_model(PAGE, MimiIWG.scenarios[1]) + run(m) - md1 = MimiIWG.get_marginaldamages(PAGE, MimiIWG.scenarios[1]) - md2 = MimiIWG.get_marginaldamages(PAGE, MimiIWG.scenarios[1], regional = true) + md1 = MimiIWG.get_marginaldamages(PAGE, MimiIWG.scenarios[1]) + md2 = MimiIWG.get_marginaldamages(PAGE, MimiIWG.scenarios[1], regional=true) - scc1 = MimiIWG.compute_scc(PAGE, MimiIWG.scenarios[1]) - scc2 = MimiIWG.compute_scc(PAGE, MimiIWG.scenarios[1], domestic = true) - @test scc2 < scc1 + scc1 = MimiIWG.compute_scc(PAGE, MimiIWG.scenarios[1]) + scc2 = MimiIWG.compute_scc(PAGE, MimiIWG.scenarios[1], domestic=true) + @test scc2 < scc1 - tmp_dir = joinpath(@__DIR__, "tmp") - MimiIWG.run_scc_mcs(PAGE, trials=2, output_dir = tmp_dir, domestic=true) - rm(tmp_dir, recursive=true) + tmp_dir = joinpath(@__DIR__, "tmp") + MimiIWG.run_scc_mcs(PAGE, trials=2, output_dir=tmp_dir, domestic=true) + rm(tmp_dir, recursive=true) # test the drop discontinuities flag set to `true` - tmp_dir = joinpath(@__DIR__, "tmp") - MimiIWG.run_scc_mcs(PAGE, trials=2, output_dir = tmp_dir, domestic=true, drop_discontinuities = true) - rm(tmp_dir, recursive=true) + tmp_dir = joinpath(@__DIR__, "tmp") + MimiIWG.run_scc_mcs(PAGE, trials=2, output_dir=tmp_dir, domestic=true, drop_discontinuities=true) + rm(tmp_dir, recursive=true) -end + end @testset "Deterministic SCC validation" begin @@ -33,7 +33,7 @@ end _atol = 0.01 # one cent - scenario_convert_flip = Dict([v=>k for (k,v) in MimiIWG.page_scenario_convert]) # need to convert scenario names in the other direction from the validation data files + scenario_convert_flip = Dict([v => k for (k, v) in MimiIWG.page_scenario_convert]) # need to convert scenario names in the other direction from the validation data files for f in files validation_data = readdlm(joinpath(validation_dir, f), ',')