From 4afaaf13ac8a3be7ada3e30ae1ecd15680343f31 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Thu, 4 Aug 2022 11:32:00 +0200 Subject: [PATCH 01/22] first test --- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/input.gms | 7 +++++++ modules/38_factor_costs/sticky_labor/equations.gms | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index 56085549c1..e535196b21 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -14,7 +14,7 @@ q36_employment(i2) .. v36_employment(i2) =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * - (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2))); + (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2)*fm_wage_scaling(ct,i2))); *' Employment is calculated as total labor costs devided by hourly labor costs and *' average hours worked per employed person per year. Total labor costs include diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index ba46b0e4a0..2596e396bd 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -66,3 +66,10 @@ $ondelim $include "./modules/36_employment/exo_may22/input/f36_historical_share.csv" $offdelim ; + +table fm_wage_scaling(t_all,i) Historical capital share +$ondelim +$include "./modules/36_employment/exo_may22/input/fm_wage_scaling.csv" +$offdelim +; + diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 32f826c063..3847024a09 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -18,13 +18,13 @@ q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_labor_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_labor_need(j2,kcr) * sum(cell(i2,j2), fm_wage_scaling(ct, i2)))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_labor_need(j2,kcr) * s38_wage)) + =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_labor_need(j2,kcr) * s38_wage * sum(ct, fm_wage_scaling(ct,i2)))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, From aa7e07b28625065ba8ca82c5b29ae178c65b74a3 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Thu, 4 Aug 2022 11:55:34 +0200 Subject: [PATCH 02/22] added parameter to not_used --- modules/36_employment/exo_may22/input/files | 1 + modules/38_factor_costs/mixed_reg_feb17/not_used.txt | 1 + modules/38_factor_costs/per_ton_fao_may22/not_used.txt | 1 + modules/38_factor_costs/sticky_feb18/not_used.txt | 1 + 4 files changed, 4 insertions(+) diff --git a/modules/36_employment/exo_may22/input/files b/modules/36_employment/exo_may22/input/files index d7ddcb6ef8..7ecb4bca4a 100644 --- a/modules/36_employment/exo_may22/input/files +++ b/modules/36_employment/exo_may22/input/files @@ -8,3 +8,4 @@ f36_unspecified_subsidies.csv f36_nonmagpie_factor_costs.csv f36_regression_cap_share.csv f36_historical_share.csv +fm_wage_scaling.csv diff --git a/modules/38_factor_costs/mixed_reg_feb17/not_used.txt b/modules/38_factor_costs/mixed_reg_feb17/not_used.txt index 8f8857ecb4..674929dc3a 100644 --- a/modules/38_factor_costs/mixed_reg_feb17/not_used.txt +++ b/modules/38_factor_costs/mixed_reg_feb17/not_used.txt @@ -11,3 +11,4 @@ pm_interest,input,questionnaire pm_prod_init,input,questionnaire vm_prod,input,questionnaire pm_labor_prod,input,questionnaire +fm_wage_scaling,par,questionaire diff --git a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt index cf446d07df..8c4e248b0f 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt +++ b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt @@ -12,3 +12,4 @@ pm_prod_init,par,questionnaire vm_tau,par,questionnaire fm_tau1995,par,questionnaire vm_area,par,questionnaire +fm_wage_scaling,par,questionaire diff --git a/modules/38_factor_costs/sticky_feb18/not_used.txt b/modules/38_factor_costs/sticky_feb18/not_used.txt index 7fd9a351b8..9c4cc386e2 100644 --- a/modules/38_factor_costs/sticky_feb18/not_used.txt +++ b/modules/38_factor_costs/sticky_feb18/not_used.txt @@ -8,3 +8,4 @@ name,type,reason vm_tau,par,questionnaire fm_tau1995,par,questionnaire vm_area,par,questionnaire +fm_wage_scaling,par,questionaire From 098e187defbc710350507294523c765b459488f0 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Thu, 4 Aug 2022 15:29:00 +0200 Subject: [PATCH 03/22] update --- modules/38_factor_costs/sticky_labor/equations.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 3847024a09..fe48b5001f 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -18,7 +18,7 @@ q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_labor_need(j2,kcr) * sum(cell(i2,j2), fm_wage_scaling(ct, i2)))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2) * sum(cell(i2,j2), fm_wage_scaling(ct, i2))) * v38_labor_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. From 9c1660407b5656aa3386b04f7209f21ca4cc1f5e Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Thu, 4 Aug 2022 15:40:02 +0200 Subject: [PATCH 04/22] update --- modules/38_factor_costs/sticky_labor/equations.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index fe48b5001f..bbe1bb1ff1 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -18,7 +18,7 @@ q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2) * sum(cell(i2,j2), fm_wage_scaling(ct, i2))) * v38_labor_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_labor_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. From d23d5be3ee96ecb6fbbef75249dec949d69527f2 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 23 Aug 2022 13:59:55 +0200 Subject: [PATCH 05/22] implemented minimum wage scneario --- config/default.cfg | 294 +++++++++--------- .../36_employment/exo_may22/declarations.gms | 18 +- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/input.gms | 7 +- modules/36_employment/exo_may22/preloop.gms | 44 ++- modules/36_employment/exo_may22/presolve.gms | 20 +- .../mixed_reg_feb17/declarations.gms | 29 -- .../mixed_reg_feb17/equations.gms | 35 --- .../38_factor_costs/mixed_reg_feb17/input.gms | 37 --- .../mixed_reg_feb17/input/files | 3 - .../mixed_reg_feb17/not_used.txt | 14 - .../mixed_reg_feb17/postsolve.gms | 17 - .../mixed_reg_feb17/preloop.gms | 8 - .../mixed_reg_feb17/presolve.gms | 22 -- .../mixed_reg_feb17/realization.gms | 32 -- .../mixed_reg_feb17/scaling.gms | 6 - .../38_factor_costs/mixed_reg_feb17/sets.gms | 16 - modules/38_factor_costs/module.gms | 3 +- .../per_ton_fao_may22/declarations.gms | 8 +- .../per_ton_fao_may22/equations.gms | 10 +- .../per_ton_fao_may22/not_used.txt | 1 - .../sticky_feb18/equations.gms | 4 +- .../38_factor_costs/sticky_feb18/not_used.txt | 1 - .../sticky_labor/equations.gms | 4 +- .../70_livestock/fbask_jan16/declarations.gms | 18 +- .../70_livestock/fbask_jan16/equations.gms | 15 +- 26 files changed, 250 insertions(+), 418 deletions(-) delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/declarations.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/equations.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/input.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/input/files delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/not_used.txt delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/postsolve.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/preloop.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/presolve.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/realization.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/scaling.gms delete mode 100644 modules/38_factor_costs/mixed_reg_feb17/sets.gms diff --git a/config/default.cfg b/config/default.cfg index 753d4c137c..cde3c2e670 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -108,7 +108,7 @@ cfg$crop_calib_min_landconversion_cost <- 0.2 # def= 0.2 # Selection type of calibration factors. # If FALSE, calibration factors from the last iteration are used. # If TRUE, calibration factors from the iteration with the lowest standard deviation are used. -cfg$best_calib_landconversion_cost <- TRUE # def = TRUE +cfg$best_calib_landconversion_cost <- TRUE # def = TRUE # Settings for NPI/NDC recalculation # * (TRUE): NPI/NDC recalculation will be performed @@ -171,9 +171,9 @@ all_iso_countries <- "ABW,AFG,AGO,AIA,ALA,ALB,AND,ARE,ARG,ARM, # * Based on https://tntcat.iiasa.ac.at/SspDb/dsd?Action=htmlpage&page=10#regiondefs oecd90andEU <- "ALB,AUS,AUT,BEL,BIH,BGR,CAN,CYP,CZE,DNK,EST,FIN,FRA, - DEU,GRC,HUN,HRV,ISL,IRL,ITA,JPN,LUX,LVA,LTU,MLT,MNE, - NLD,NOR,NZL,POL,PRT,ROU,SRB,SVK,SVN,ESP,SWE,CHE,MKD,TUR, - GBR,USA" + DEU,GRC,HUN,HRV,ISL,IRL,ITA,JPN,LUX,LVA,LTU,MLT,MNE, + NLD,NOR,NZL,POL,PRT,ROU,SRB,SVK,SVN,ESP,SWE,CHE,MKD,TUR, + GBR,USA" # ***--------------------- 09_drivers ---------------------------------------- # * (aug17): default drivers @@ -181,7 +181,7 @@ cfg$gms$drivers <- "aug17" # def = aug17 cfg$gms$c09_pop_scenario <- "SSP2" # def = SSP2 cfg$gms$c09_gdp_scenario <- "SSP2" # def = SSP2 # * options: SSP: "SSP1", "SSP2", "SSP3", "SSP4", "SSP5", "SSP2EU" -# * SDP: "SDP", "SDP_EI", "SDP_MC", "SDP_RC" +# * SDP: "SDP", "SDP_EI", "SDP_MC", "SDP_RC" # * SRES: "A1", "A2", "B1", "B2" # * Note: SSP2EU a European Commission population/income scenario for # * Ariadne project. SDP is same as SSP1 income, while SDP_EI, SDP_RC, SDP_MC @@ -266,19 +266,19 @@ cfg$gms$s12_hist_interest_hic_noselect <- "0.04" # def = 0.04 # * (endo_jan22): endogenous technological change with full cost accounting and # * stepwise updated crop and managed pastures area information # * (exo): exogenous technological change (removes non-linearities from the model); -# * requires an existing model run with endo tc for generating the input file -# * f13_tau_scenario.csv +# * requires an existing model run with endo tc for generating the input file +# * f13_tau_scenario.csv cfg$gms$tc <- "endo_jan22" # def = endo_jan22 # * tc cost scenario crops: low, medium or high -cfg$gms$c13_tccost <- "medium" # def = medium +cfg$gms$c13_tccost <- "medium" # def = medium # * ignore historical tau (1) or use it as lower bound (0) -cfg$gms$s13_ignore_tau_historical <- 1 # def = 1 +cfg$gms$s13_ignore_tau_historical <- 1 # def = 1 # * Maximum regional tech cost expressed as share of reginal GDP -# * A meaningful value would be 0.002. However, this bound causes infeasibilities in some cases. -# * Therefore, this bound is not used in the current model version. +# * A meaningful value would be 0.002. However, this bound causes infeasibilities in some cases. +# * Therefore, this bound is not used in the current model version. cfg$gms$s13_max_gdp_shr <- Inf # def = Inf @@ -354,9 +354,9 @@ cfg$gms$s15_milk_share_fadeout_india <- 1 # def = 1 # * and transition periods (applied after food demand model is executed) # * options consist of 3 parts: functional form (lin,sigmoid), target (zero, 20pc, 50pc, 80pc, 90pc) and transition period (10_50: from 2010 to 2050, 20_50: from 2020 to 2050) # * Example for sigmoid_50pc_20_50: -# * Functional form: sigmoid (S-shaped) -# * Target: 50percent reduction at end of transition period (2050 in this case) -# * Transition period: start in 2020, end in 2050 +# * Functional form: sigmoid (S-shaped) +# * Target: 50percent reduction at end of transition period (2050 in this case) +# * Transition period: start in 2020, end in 2050 # * options: constant, # * lin_zero_10_50, lin_zero_20_50, lin_zero_20_30, lin_zero_20_70, lin_50pc_20_50, lin_50pc_20_50_extend65, lin_50pc_20_50_extend80, # * lin_50pc_10_50_extend90, lin_75pc_10_50_extend90, lin_80pc_20_50, lin_80pc_20_50_extend95, lin_90pc_20_50_extend95, @@ -370,7 +370,7 @@ cfg$gms$c15_rumdairyscen <- "constant" # def = constant # * Set items of kfo_rd. This option allows for sensitivity scenarios. # * kfo_rd is used in the food substitution scenarios c15_rumdairy_scp_scen and c15_rumdairyscen (see above) -# * options: "livst_rum,livst_milk", "livst_rum" or "livst_milk" +# * options: "livst_rum,livst_milk", "livst_rum" or "livst_milk" cfg$gms$kfo_rd <- "livst_rum" #def = livst_rum # * Reduction of livestock products towards a kcal/cap/day intake target with or w/o substitution @@ -381,7 +381,7 @@ cfg$gms$s15_kcal_pc_livestock_intake_target <- "430" # def = 430 cfg$gms$c15_livescen_target <- "constant" # def = constant # * fade-out of livestock products (0) or substitution of livestock products with plant-based products (1) # * options: 0 (=fade-out), 1 (=substitution) -cfg$gms$s15_livescen_target_subst <- 1 # def = 1 +cfg$gms$s15_livescen_target_subst <- 1 # def = 1 # ***** Start configuration of exogenous food intake and waste scenarios ***** @@ -506,7 +506,7 @@ cfg$gms$processing <- "substitution_may21" # def = substitution_may21 # * SCP route # * single-cell microbial protein production route -# * options: mixed, methane, sugar, cellulose, hydrogen +# * options: mixed, methane, sugar, cellulose, hydrogen # * Mapping of scp route to feedstock: methane:foddr, sugar:sugar_cane, cellulose:begr # * Note that hydrogen does not require land-based inputs # * Mixed assumes equal shares of methane, sugar, cellulose and hydrogen @@ -560,7 +560,7 @@ cfg$gms$land_conservation <- "area_based_apr22" # def = area_based_ap # * ("Forest_Other") PrimForest + PrimForest+ other land conservation + WDPA # * Note: c22_protect_scenario applies to countries selected in policy_countries22 # * c22_protect_scenario_noselect applies to all other countries. -cfg$gms$c22_protect_scenario <- "none" # def = None +cfg$gms$c22_protect_scenario <- "none" # def = None cfg$gms$c22_protect_scenario_noselect <- "none" # def = None # * Switch and specification of countries for which land conservation policies in # * c22_protect_scenario apply. @@ -603,7 +603,7 @@ cfg$gms$c30_rotation_constraints <- "on" # def = "on" # * good_20div (good practice - 20% for other crops), setaside (default plus fallow), # * legumes (minimum share of legumes), agroforestry (minimum share of perennials), sixfoldrotation # * (crops can only repeat after 6 years), agroecology (mix of previous scenarios) -# * In realization penalty_apr22: none (no incentives), default (best guess), fallow (increased fallow incentives), +# * In realization penalty_apr22: none (no incentives), default (best guess), fallow (increased fallow incentives), # * legumes (increased incentives for legumes), agroforestry (increased incentives for perennials), agroecology (mix) # * In realization endo_apr21: no scenarios exist. cfg$gms$c30_rotation_scenario <- "default" # def = "default" @@ -669,7 +669,7 @@ cfg$gms$c31_past_suit_scen <- "ssp370" # def = "ssp370" cfg$gms$s31_limit_calib <- 1 # def = 1 # ***--------------------- 32_forestry ----------------------------------- -# * (dynamic_feb21): Dynamic forestry sector including afforestation with detailed age-classes +# * (dynamic_feb21): Dynamic forestry sector including afforestation with detailed age-classes cfg$gms$forestry <- "dynamic_feb21" # def = dynamic_feb21 # * afforestation planing horizon (years) @@ -682,7 +682,7 @@ cfg$gms$s32_planing_horizon <- 50 # def = 50 # * vegetation carbon density. # * Afforestation following plantation growth curves reflects managed or assistent regrowth, # * and might also include non-native species. -cfg$gms$s32_aff_plantation <- 0 # def = 0 +cfg$gms$s32_aff_plantation <- 0 # def = 0 # * BII coefficient for CO2 price driven afforestation # * Switch for using secondary vegetation (0) or timber (1) BII coefficients for CO2 price driven afforestation @@ -690,7 +690,7 @@ cfg$gms$s32_aff_plantation <- 0 # def = 0 # * natural vegetation growth curve (0): secondary vegetation BII coefficient (0) # * plantation growth curve (1): timber BII coefficient (1) # * However, afforestation with plantations (1) could possibly be done in a biodiversity friendly way (0) -cfg$gms$s32_aff_bii_coeff <- 0 # def = 0 +cfg$gms$s32_aff_bii_coeff <- 0 # def = 0 # Afforestation policy # * ("none"): no prescribed afforestation @@ -811,7 +811,7 @@ cfg$gms$c34_urban_scenario <- "SSP2" # def = SSP2 # ***--------------------- 35_natveg -------------------------------------- # * 35_natveg includes primforest, secdforest and other land -# * (dynamic_feb21): Dynamic natural vegetation land with detailed age-classes +# * (dynamic_feb21): Dynamic natural vegetation land with detailed age-classes cfg$gms$natveg <- "dynamic_feb21" # def = dynamic_feb21 # Avoided Deforestation policy @@ -838,7 +838,7 @@ cfg$gms$s35_secdf_distribution <- 0 # def = 0 # * (2): Damage from shifting agriculture is faded out by the year defined in 'cfg$gms$c35_forest_damage_end' cfg$gms$s35_forest_damage <- 2 # def = 2 # * If option (2) above: Year by which damage from shifting agriculture has petered out -cfg$gms$s35_forest_damage_end <- 2050 #def = 2050 +cfg$gms$s35_forest_damage_end <- 2050 #def = 2050 # Harvesting switch for timber production # * 0 = No timber production from natveg, no age-class shifting @@ -852,6 +852,14 @@ cfg$gms$s35_hvarea <- 0 # def = 0 # * optimization cfg$gms$employment <- "exo_may22" # default = "exo_may22" +# global minimum wage that needs to reached in all countries by 2050 +cfg$gms$s36_minimum_wage <- 0 # default = 0 (no minimum wage) + +# If minimum wage leads to higher hourly labor costs, should total labor costs be scaled accordingly (1), or not (0)? +# If labor costs are scaled and sticky_labor is used for 38_factor_costs, a shift from labor to capital use will take +# place. The assumption of not scaling total labor costs would be, that productivity increases proportional to hourly +# labor costs, leading to less people employed +cfg$gms$s36_scale_labor_costs <- 1 # default = 1 # ***--------------------- 37_labor_prod --------------------------------- # * This module provides a labour productivity factor (0-1), @@ -860,17 +868,17 @@ cfg$gms$employment <- "exo_may22" # default = "exo_may22" # * realization of the [38_factor_costs] module. # * (off): labour productivity factor fixed to 1 # * (exo): labour productivity factor is affected by climate change impacts -cfg$gms$labor_prod <- "off" # default = off +cfg$gms$labor_prod <- "off" # default = off # * Additional setting for exo realization only: # * Climate change impact scenario. Options: "rcp119", "rcp585" -cfg$gms$c37_labor_rcp <- "rcp119" # default = "rcp119" +cfg$gms$c37_labor_rcp <- "rcp119" # default = "rcp119" # * Heat assessment metric. Options: "ISO", "HOTHAPS" -cfg$gms$c37_labor_metric <- "ISO" # default = "ISO" +cfg$gms$c37_labor_metric <- "ISO" # default = "ISO" # * Labour intensity. Options: "300W", "400W" -cfg$gms$c37_labor_intensity <- "400W" # default = "400W" +cfg$gms$c37_labor_intensity <- "400W" # default = "400W" # * Uncertainty over ESMs. Options: "enslower", "ensmean", "ensupper" -cfg$gms$c37_labor_uncertainty <- "ensmean" # default = "ensmean" +cfg$gms$c37_labor_uncertainty <- "ensmean" # default = "ensmean" # ***--------------------- 38_factor_costs ------------------------------- @@ -898,22 +906,22 @@ cfg$gms$c38_fac_req <- "glo" # default "glo" # ***--------------------- 39_landconversion ----------------------------- # * (calib): Costs for cropland expansion are scaled with a regional calibration factor -# * Costs for pasture and forestry expansion are global static -cfg$gms$landconversion <- "calib" # def = calib +# * Costs for pasture and forestry expansion are global static +cfg$gms$landconversion <- "calib" # def = calib # * Cost for cropland expansion before calibration (USD05MER per hectare) -cfg$gms$s39_cost_establish_crop <- 10000 #def = 10000 +cfg$gms$s39_cost_establish_crop <- 10000 #def = 10000 # * Share of cropland expansion cost used as reward for cropland reduction in calibration (1) cfg$gms$s39_reward_shr <- 0.66 # * Cost for pasture land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_past <- 8000 #def = 8000 +cfg$gms$s39_cost_establish_past <- 8000 #def = 8000 # * Cost for foresty land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_forestry <- 1000 #def = 1000 +cfg$gms$s39_cost_establish_forestry <- 1000 #def = 1000 # * Cost for urban land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_urban <- 10000 #def = 10000 +cfg$gms$s39_cost_establish_urban <- 10000 #def = 10000 # * Switch for ignoring land conversion cost calibration factors # * Options: 1 (ignore calibration factors) -# * 0 (use calibration factors) -cfg$gms$s39_ignore_calib <- 0 #def = 0 +# * 0 (use calibration factors) +cfg$gms$s39_ignore_calib <- 0 #def = 0 # ***--------------------- 40_transport ---------------------------------- # * (off): no transport costs @@ -1038,10 +1046,10 @@ cfg$gms$c43_watavail_scenario <- "cc" # def = "cc" cfg$gms$biodiversity <- "bii_target" # def = bii_target # * Start year for linear increase towards BII target value (in bii_target) or biodiversity target price (in bv_btc_mar21) -cfg$gms$s44_start_year <- 2025 #def = 2025 +cfg$gms$s44_start_year <- 2025 #def = 2025 # * Year in which the BII target value (in bii_target) or biodiversity target price (in bv_btc_mar21) is reached -cfg$gms$s44_target_year <- 2100 #def = 2100 +cfg$gms$s44_target_year <- 2100 #def = 2100 # ** Options for realization `bii_target` # * This realisation allows to define a target value and year for the Biodiversity Intactness Index (BII) @@ -1057,20 +1065,20 @@ cfg$gms$s44_target_year <- 2100 #def = 2100 # * In MAgPIE, the global BII value is about 0.8 in 1995 and declines to 0.795 by 2020. # * Lower bound for BII in target year; plausible range: 0-1 -cfg$gms$s44_bii_lower_bound <- 0 #def = 0 +cfg$gms$s44_bii_lower_bound <- 0 #def = 0 # * Indicative outcomes for `s44_bii_lower_bound` based on c44_bii_decrease = 1, s44_start_year = 2025 and s44_target_year = 2100. -# * < 0.7: continued decrease of global BII -# * 0.74: no further decrease of global BII -# * 0.76: moderate increase of global BII -# * >= 0.78: (very) strong increase of global BII accomplished by high conversion of pasture to non-forest natural land +# * < 0.7: continued decrease of global BII +# * 0.74: no further decrease of global BII +# * 0.76: moderate increase of global BII +# * >= 0.78: (very) strong increase of global BII accomplished by high conversion of pasture to non-forest natural land # * BII lower bound implementation (binary) # * options: 0 (no decrease allowed) or 1 (decrease allowed) # * 0 (no decrease allowed): If the biome-level BII in `s44_start_year` exceeds the lower bound defined in `s44_bii_lower_bound, the BII value in the start year is used as lower bound for BII in all future time steps. # * 1 (decrease allowed): The lower bound for BII can decrease over time, depending on the biome-level BII in the start year and the lower bound defined in `s44_bii_lower_bound. # * Note: The BII constraint is defined as a minimum constraint. Therefore, the actual BII can be higher than the lower bound. -cfg$gms$c44_bii_decrease <- 1 #def = 1 +cfg$gms$c44_bii_decrease <- 1 #def = 1 # ** Options for realization `bv_btc_mar21` @@ -1078,14 +1086,14 @@ cfg$gms$c44_bii_decrease <- 1 #def = 1 # * Price for biodiversity stock loss/gain in target year (USD per ha) # * Plausible range: 0-10000 # * Indicative outcomes -# * 0: decrease of BII -# * 3000: rather constant BII -# * 6000: moderate increase of BII -# * 10000: stronger increase of BII -cfg$gms$s44_target_price <- 0 #def = 0 +# * 0: decrease of BII +# * 3000: rather constant BII +# * 6000: moderate increase of BII +# * 10000: stronger increase of BII +cfg$gms$s44_target_price <- 0 #def = 0 # * Price for biodiversity stock loss/gain in start year (USD per ha) -cfg$gms$s44_start_price <- 0 #def = 0 +cfg$gms$s44_start_price <- 0 #def = 0 # ***------------------------- 45_climate --------------------------------- @@ -1121,8 +1129,8 @@ cfg$gms$c50_scen_neff_noselect <- "neff60_60_starty2010" # def = neff60_60_sta # * neff55_55_starty1990,neff60_60_starty1990,neff65_70_starty1990, # * neff65_70_starty2010,neff60_60_starty2010,neff55_60_starty2010, # * neff70_75_starty2010,neff75_80_starty2010,neff80_85_starty2010 -cfg$gms$c50_scen_neff_pasture <- "constant" # def = constant -cfg$gms$c50_scen_neff_pasture_noselect <- "constant" # def = constant +cfg$gms$c50_scen_neff_pasture <- "constant" # def = constant +cfg$gms$c50_scen_neff_pasture_noselect <- "constant" # def = constant # * Switch and specification of countries for which above defined (c50_scen_neff, # * c50_scen_neff_pasture) apply, respectively. @@ -1198,62 +1206,62 @@ cfg$gms$scen_countries55 <- all_iso_countries cfg$gms$ghg_policy <- "price_jan20" # def = price_jan20 # * Switch for scaling GHG price with development state (1=on 0=off) -cfg$gms$s56_ghgprice_devstate_scaling <- 0 # def = 0 +cfg$gms$s56_ghgprice_devstate_scaling <- 0 # def = 0 # * Switch for phasing-in GHG price over a 20 year period (1=on 0=off) -cfg$gms$s56_ghgprice_phase_in <- 0 # def = 0 +cfg$gms$s56_ghgprice_phase_in <- 0 # def = 0 # * start year of GHG emission pricing phase-in (only used if s56_ghgprice_phase_in=1) -cfg$gms$s56_ghgprice_start <- 2025 # def = 2025 +cfg$gms$s56_ghgprice_start <- 2025 # def = 2025 # * reduction factor for CO2 price (only used in price_jan19) # * lowers the economic incentive for CO2 emission reduction (avoided deforestation) and afforestation -cfg$gms$s56_cprice_red_factor <- 1 # def = 1 +cfg$gms$s56_cprice_red_factor <- 1 # def = 1 # * GHG emission price scenario # * Note: For best consistency it is recommended to use trajectories from the most recent -# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. +# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. # * Note on available scenarios from coupled REMIND-MAgPIE runs -# * NPi: Current policies; above 3.0°C in 2100 -# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) -# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 +# * NPi: Current policies; above 3.0°C in 2100 +# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) +# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 # * # * Available scenarios: -# * Coupled REMIND-MAgPIE runs -# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, +# * Coupled REMIND-MAgPIE runs +# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, # * R21M42-SSP1-NPi, R21M42-SSP1-PkBudg1100, R21M42-SSP1-PkBudg1300, R21M42-SSP1-PkBudg900, # * R21M42-SSP2-NPi, R21M42-SSP2-PkBudg1100, R21M42-SSP2-PkBudg1300, R21M42-SSP2-PkBudg900, # * R21M42-SSP5-NPi, R21M42-SSP5-PkBudg1100, R21M42-SSP5-PkBudg1300, R21M42-SSP5-PkBudg900, -# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 +# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 # * Standalone REMIND runs from Strefler et al 2021; well-below 2.0°C in 2100 -# * https://www.nature.com/articles/s41467-021-22211-2 -# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT +# * https://www.nature.com/articles/s41467-021-22211-2 +# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT # * SSP Database 2018, various SSP, RCP and Model combinations -# * https://tntcat.iiasa.ac.at/SspDb -# * Caution: using trajectories from other models or older MAgPIE versions might be -# * inconsistent with the current MAgPIE version. -# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, -# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, -# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, -# * SSPDB-SSP1-37-REMIND-MAGPIE, -# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, -# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, -# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, -# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, -# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, -# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, -# * SSPDB-SSP2-37-REMIND-MAGPIE, -# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, -# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, -# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, -# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, -# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, -# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, -# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, -# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, -# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, -# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, -# * SSPDB-SSP5-Ref-REMIND-MAGPIE, +# * https://tntcat.iiasa.ac.at/SspDb +# * Caution: using trajectories from other models or older MAgPIE versions might be +# * inconsistent with the current MAgPIE version. +# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, +# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, +# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, +# * SSPDB-SSP1-37-REMIND-MAGPIE, +# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, +# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, +# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, +# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, +# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, +# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, +# * SSPDB-SSP2-37-REMIND-MAGPIE, +# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, +# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, +# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, +# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, +# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, +# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, +# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, +# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, +# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, +# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, +# * SSPDB-SSP5-Ref-REMIND-MAGPIE, # * Used for producing coupled runs with REMIND-MAgPIE or for exogenous input (see below) # * coupling # * Note: c56_pollutant_prices applies to countries selected in policy_countries56 @@ -1291,12 +1299,12 @@ cfg$gms$s56_c_price_induced_aff <- 1 # * 0 is myopic behaviour (only C price of current time step) # * reflects perfect-foresight if equal to s32_planing_horizon # * should not be higher than s32_planing_horizon -cfg$gms$s56_c_price_exp_aff <- 50 # def = 50 +cfg$gms$s56_c_price_exp_aff <- 50 # def = 50 # * share of carbon credits for afforestation projects pooled in a buffer # * Values > 0 will reduced the incentive for c price induced afforestation # * a plausible value is 0.2, based on the Gold Standard for afforestation projects -cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 +cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 # * Upper limit for CH4 and N2O GHG price (USD05MER per tC) # * Limits GHG prices selected in c56_pollutant_prices to the chosen value. @@ -1307,7 +1315,7 @@ cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 cfg$gms$s56_limit_ch4_n2o_price <- 1000 # def = 1000 # * NOTE: The following 2 options for emission pricing have strong interactions in runs with CO2 prices and should only be changed by experienced users. -# * The main purpose of these options is to regulate the pricing of positive emissions. Note that re/afforestation is covered by a separate mechanism. +# * The main purpose of these options is to regulate the pricing of positive emissions. Note that re/afforestation is covered by a separate mechanism. # * GHG emission pricing policies # * options: none, redd_nosoil, redd+_nosoil, redd+natveg_nosoil, all, all_nosoil, maccs_excl_cropland_n2o @@ -1321,14 +1329,14 @@ cfg$gms$s56_limit_ch4_n2o_price <- 1000 # def = 1000 # * sdp_cropeff (only ch4 from rice), sdp_livestock (only ch4 and n2o from livestock), sdp_peatland (co2, ch4 and n2o from peatland), # * sdp_redd (only co2 from vegc), sdp_soil (only co2 from litc and soilc), sdp_redd_soil (only co2 from vegc, litc, soilc) # * sdp_all (all individual sdp scenarios combined), sdp_allnosoil (all sdp scenarios without soil pricing) -cfg$gms$c56_emis_policy <- "redd+natveg_nosoil" # def = redd+natveg_nosoil +cfg$gms$c56_emis_policy <- "redd+natveg_nosoil" # def = redd+natveg_nosoil # * CO2 emissions subject to carbon pricing # * options: actual, actualNoAcEst -# * actual: CO2 emissions for pricing are based on the difference of actual carbon stocks between time steps -# * actualNoAcEst: CO2 emissions for pricing are based on actual carbon stocks but -# * without newly established forest and non-forest areas. Note that re/afforestation is covered by a separate mechanism. -c56_carbon_stock_pricing <- "actualNoAcEst" # def = actualNoAcEst +# * actual: CO2 emissions for pricing are based on the difference of actual carbon stocks between time steps +# * actualNoAcEst: CO2 emissions for pricing are based on actual carbon stocks but +# * without newly established forest and non-forest areas. Note that re/afforestation is covered by a separate mechanism. +c56_carbon_stock_pricing <- "actualNoAcEst" # def = actualNoAcEst # ***--------------------- 57_maccs --------------------------------------- @@ -1346,9 +1354,9 @@ cfg$gms$maccs <- "on_sep16" # def = on_sep16 cfg$gms$c57_macc_version <- "PBL_2007" # def = PBL_2007 # ***--------------------- 58_peatland ------------------------------------ -# * (off): Peatland area and associated GHG emissions are assumed zero -# * (on): Peatland area is initialized with present-day degraded and intact peatland. -# * GHG emissions are calculated using IPCC Tier 1 emission factors (2013 Wetland supplement). +# * (off): Peatland area and associated GHG emissions are assumed zero +# * (on): Peatland area is initialized with present-day degraded and intact peatland. +# * GHG emissions are calculated using IPCC Tier 1 emission factors (2013 Wetland supplement). cfg$gms$peatland <- "on" # def = on # * peatland rewetting @@ -1378,8 +1386,8 @@ cfg$gms$s58_cost_balance <- 1e+06 # def = 1e+06 # * Switch for fixing peatland area to 2015 levels from 1995 onwards until the given year # * Note: The initial peatland area is only available for the year 2015. -# * Fixing the peatland area in previous time steps to 2015 levels provides a better -# * proxy for GHG emissions from peatlands than assuming no peatland area. +# * Fixing the peatland area in previous time steps to 2015 levels provides a better +# * proxy for GHG emissions from peatlands than assuming no peatland area. cfg$gms$s58_fix_peatland <- 2015 # def = 2015 # ***------------------------- 59_som ------------------------------------- @@ -1424,48 +1432,48 @@ cfg$gms$c60_1stgen_biodem <- "const2020" # def = const2020 # * 2nd generation bioenergy demand scenario # * Note: For best consistency it is recommended to use trajectories from the most recent -# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. +# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. # * Note on available scenarios from coupled REMIND-MAgPIE runs -# * NPi: Current policies; above 3.0°C in 2100 -# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) -# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 +# * NPi: Current policies; above 3.0°C in 2100 +# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) +# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 # * # * Available scenarios: -# * Coupled REMIND-MAgPIE runs -# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, +# * Coupled REMIND-MAgPIE runs +# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, # * R21M42-SSP1-NPi, R21M42-SSP1-PkBudg1100, R21M42-SSP1-PkBudg1300, R21M42-SSP1-PkBudg900, # * R21M42-SSP2-NPi, R21M42-SSP2-PkBudg1100, R21M42-SSP2-PkBudg1300, R21M42-SSP2-PkBudg900, # * R21M42-SSP5-NPi, R21M42-SSP5-PkBudg1100, R21M42-SSP5-PkBudg1300, R21M42-SSP5-PkBudg900, -# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 +# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 # * Standalone REMIND runs from Strefler et al 2021; well-below 2.0°C in 2100 -# * https://www.nature.com/articles/s41467-021-22211-2 -# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT +# * https://www.nature.com/articles/s41467-021-22211-2 +# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT # * SSP Database 2018, various SSP, RCP and Model combinations -# * https://tntcat.iiasa.ac.at/SspDb -# * Caution: using trajectories from other models or older MAgPIE versions might be -# * inconsistent with the current MAgPIE version. -# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, -# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, -# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, -# * SSPDB-SSP1-37-REMIND-MAGPIE, -# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, -# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, -# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, -# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, -# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, -# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, -# * SSPDB-SSP2-37-REMIND-MAGPIE, -# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, -# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, -# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, -# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, -# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, -# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, -# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, -# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, -# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, -# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, -# * SSPDB-SSP5-Ref-REMIND-MAGPIE, +# * https://tntcat.iiasa.ac.at/SspDb +# * Caution: using trajectories from other models or older MAgPIE versions might be +# * inconsistent with the current MAgPIE version. +# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, +# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, +# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, +# * SSPDB-SSP1-37-REMIND-MAGPIE, +# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, +# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, +# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, +# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, +# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, +# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, +# * SSPDB-SSP2-37-REMIND-MAGPIE, +# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, +# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, +# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, +# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, +# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, +# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, +# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, +# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, +# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, +# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, +# * SSPDB-SSP5-Ref-REMIND-MAGPIE, # * Used for producing coupled runs with REMIND-MAgPIE or for exogenous input (see below) # * coupling # * Note: c60_2ndgen_biodem applies to countries selected in scen_countries60 @@ -1500,7 +1508,7 @@ cfg$gms$c60_biodem_level <- 1 # def = 1 # * Minimum dedicated 2nd generation bioenergy demand assumed in each region (mio. GJ per yr) # * Without a minimum demand, there is the risk that some regions won't have a price for 2nd generation bioenergy. # * Therefore, the minimum demand is of particular importance for the coupling with REMIND. -cfg$gms$s60_2ndgen_bioenergy_dem_min <- 1 # def = 1 +cfg$gms$s60_2ndgen_bioenergy_dem_min <- 1 # def = 1 # * first generation bioenergy subsidy (USD05MER per ton) cfg$gms$c60_bioenergy_subsidy <- 300 # def = 300 @@ -1515,7 +1523,7 @@ cfg$gms$material <- "exo_flexreg_apr16" cfg$gms$livestock <- "fbask_jan16" # def = fbask_jan16 # * Year until the pasture management factor is fixed to 1 -cfg$gms$s70_past_mngmnt_factor_fix <- "2005" # def = 2005 +cfg$gms$s70_past_mngmnt_factor_fix <- "2005" # def = 2005 # * feed scenario # * options: SSP: ssp1, ssp2, ssp3, ssp4, ssp5 @@ -1526,9 +1534,9 @@ cfg$gms$c70_feed_scen <- "ssp2" # def = ssp2 # * Feed substitution scenarios. # * options consist of 3 parts: functional form (lin,sigmoid), target (zero, 20pc, 50pc, 80pc, 90pc) and transition period (10_50: from 2010 to 2050, 20_50: from 2020 to 2050) # * Example for sigmoid_50pc_20_50: -# * Functional form: sigmoid (S-shaped) -# * Target: 50percent reduction at end of transition period (2050 in this case) -# * Transition period: start in 2020, end in 2050 +# * Functional form: sigmoid (S-shaped) +# * Target: 50percent reduction at end of transition period (2050 in this case) +# * Transition period: start in 2020, end in 2050 # * options: constant, # * lin_zero_10_50, lin_zero_20_50, lin_zero_20_30, lin_zero_20_70, lin_50pc_20_50, lin_50pc_20_50_extend65, lin_50pc_20_50_extend80, # * lin_50pc_10_50_extend90, lin_75pc_10_50_extend90, lin_80pc_20_50, lin_80pc_20_50_extend95, lin_90pc_20_50_extend95, diff --git a/modules/36_employment/exo_may22/declarations.gms b/modules/36_employment/exo_may22/declarations.gms index c3e55e18a7..741447a0f1 100644 --- a/modules/36_employment/exo_may22/declarations.gms +++ b/modules/36_employment/exo_may22/declarations.gms @@ -15,13 +15,17 @@ positive variables ; parameters - p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) - p36_hourly_costs(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) - p36_total_hours_worked(iso) Total hours worked by all employed people (mio. hours per year) - p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) - p36_cost_share(t,i) Capital share of factor costs (1) - p36_share_calibration(i) Additive calibration term for capital shares (1) - p36_nonmagpie_labor_costs(t,i) Labor costs from subsidies and VoP not covered by MAgPIE (mio. USDMER05) + p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) + p36_hourly_costs_increase(iso) Difference between minimum hourly labor costs and actual hourly labor costs in 2050 (USDMER05 per hour) + p36_hourly_costs_iso_min_wage(t,iso) Hourly labor costs in agriculture on iso level after including minimum wage (USDMER05 per hour) + p36_hourly_costs(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) + p36_hourly_costs_min_wage(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) + pm_labor_cost_scaling(t,i) Multiplicative factor describing increase in hourly labor costs to match minimum wage (1) + p36_total_hours_worked(iso) Total hours worked by all employed people (mio. hours per year) + p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) + p36_cost_share(t,i) Capital share of factor costs (1) + p36_share_calibration(i) Additive calibration term for capital shares (1) + p36_nonmagpie_labor_costs(t,i) Labor costs from subsidies and VoP not covered by MAgPIE (mio. USDMER05) ; *#################### R SECTION START (OUTPUT DECLARATIONS) #################### diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index e535196b21..8ce42b7d35 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -14,7 +14,7 @@ q36_employment(i2) .. v36_employment(i2) =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * - (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2)*fm_wage_scaling(ct,i2))); + (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs_min_wage(ct,i2))); *' Employment is calculated as total labor costs devided by hourly labor costs and *' average hours worked per employed person per year. Total labor costs include diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index 2596e396bd..0bbd63f934 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -7,6 +7,8 @@ scalars s36_weeks_in_year number of weeks in a year / 52.1429 / +s36_minimum_wage global minimum wage / 3 / +s36_scale_labor_costs whether total labor costs should be scaled according to wage increase / 0 / ; table f36_weekly_hours(t_all,i) Historical values of average weekly hours worked per person in agriculture (h per week) @@ -67,9 +69,4 @@ $include "./modules/36_employment/exo_may22/input/f36_historical_share.csv" $offdelim ; -table fm_wage_scaling(t_all,i) Historical capital share -$ondelim -$include "./modules/36_employment/exo_may22/input/fm_wage_scaling.csv" -$offdelim -; diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 0c512054c2..33f25e6921 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -8,4 +8,46 @@ * get calibration factors and aggregation weight p36_calibration_hourly_costs(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_hist_hourly_costs(t_past,iso)-(im_gdp_pc_mer_iso(t_past,iso) *f36_regr_hourly_costs("slope")+f36_regr_hourly_costs("intercept"))); -p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_historic_ag_empl(t_past,iso)*f36_weekly_hours_iso(t_past,iso)*s36_weeks_in_year); \ No newline at end of file +p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_historic_ag_empl(t_past,iso)*f36_weekly_hours_iso(t_past,iso)*s36_weeks_in_year); + +*' Hourly labor costs are projected into the future by using a linear regression with +*' GDPpcMER, which is calibrated such that historic values of agricultural employment +*' are met. A threshold of 0.1$/h is used in the regression to avoid too low or +*' negative hourly labor costs. +p36_hourly_costs_iso(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope")+ + f36_regr_hourly_costs("intercept")+p36_calibration_hourly_costs(iso)), + f36_regr_hourly_costs("threshold")); + +p36_hourly_costs_iso(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); + +* necessary increase in hourly labor costs in target year (2050) to match minimum wage +p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso("y2050",iso); + +*' In case of a scenario with an external minimum wage we add a linear term to the original +*' labor costs, which starts from 0 in 2020, reaches the difference the minimum wage and +*' original hourly labor costs in 2050, and then decreases back to 0 in 2100. +*' If the hourly labor costs would decrease again below he minimum wage after 2050, we keep them at minimum wage. +*' If original labor costs are already high enough to meet the minimum wage, they are not changed. +p36_hourly_costs_iso_min_wage(t,iso) = p36_hourly_costs_iso(t,iso); + +p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso(t,iso) + + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); + +p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, + p36_hourly_costs_iso(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); + +*' Hourly labor costs are then aggregated to regional level using the total hours worked in the last +*' year of t_past as weight. +p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +p36_hourly_costs_min_wage(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_min_wage(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); + +*' If productivity increase is assumed to be proportional to hourly labor costs also with external minimum wage, +*' total labor costs should not be scaled. Otherwise, the scaling factor between old and new hourly labor costs will +*' be applied to labor costs for crop production [38_factor_costs], livestock production [70_livestock], and the +*' non-MAgPIE labor costs. +if (s36_scale_labor_costs eq 0, + pm_labor_cost_scaling(t,i) = 1; +elseif (s36_scale_labor_costs eq 1), + pm_labor_cost_scaling(t,i) = p36_hourly_costs_min_wage(t,i) / p36_hourly_costs(t,i); +); + diff --git a/modules/36_employment/exo_may22/presolve.gms b/modules/36_employment/exo_may22/presolve.gms index de8d8f6650..e41906b82a 100644 --- a/modules/36_employment/exo_may22/presolve.gms +++ b/modules/36_employment/exo_may22/presolve.gms @@ -20,24 +20,6 @@ elseif (m_year(t)>=2010), *' categories not covered by MAgPIE (i.e. wool, beeswax, honey, silk-worms), which *' are both kept constant for future years. -p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)); - - -*' Hourly labor costs are projected into the future by using a linear regression with -*' GDPpcMER, which is calibrated such that historic values of agricultural employment -*' are met. +p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * pm_labor_cost_scaling(ct,i2); *' @stop - -* historic hourly labor costs for t_past, calibrated regression values based on GDPpcMER for future years -* A threshold of 0.1$/h is used in the regression to avoid too low or negative hourly labor costs. -if (sum(sameas(t_past,t),1) = 1, - p36_hourly_costs_iso(t,iso) = f36_hist_hourly_costs(t,iso) -else - p36_hourly_costs_iso(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope")+ - f36_regr_hourly_costs("intercept")+p36_calibration_hourly_costs(iso)), - f36_regr_hourly_costs("threshold")); -); - - -p36_hourly_costs(t,i) = sum(i_to_iso(i,iso),p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); diff --git a/modules/38_factor_costs/mixed_reg_feb17/declarations.gms b/modules/38_factor_costs/mixed_reg_feb17/declarations.gms deleted file mode 100644 index 73aa1eced0..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/declarations.gms +++ /dev/null @@ -1,29 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -equations -q38_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) -; - - -positive variables -vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) -; - -parameters -p38_fac_req(i,kcr,w) Regional factor requirement costs differentiated by irrigation type (USD05MER per tDM) -p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for plant production (1) -p38_share_calibration(i) Summation factor used to calibrate calculated capital shares with historical values (1) - -; - -*#################### R SECTION START (OUTPUT DECLARATIONS) #################### -parameters - ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) - oq38_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) -; -*##################### R SECTION END (OUTPUT DECLARATIONS) ##################### diff --git a/modules/38_factor_costs/mixed_reg_feb17/equations.gms b/modules/38_factor_costs/mixed_reg_feb17/equations.gms deleted file mode 100644 index a0785fdb23..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/equations.gms +++ /dev/null @@ -1,35 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - - -*' @equations - - -q38_cost_prod_crop(i2,req) .. - vm_cost_prod_crop(i2,req) =e= (sum((cell(i2,j2), supreg(h2,i2), w, kcr), vm_area(j2,kcr,w)*f38_region_yield(i2,kcr) - * vm_tau(h2,"crop")/fm_tau1995(h2)*p38_fac_req(i2,kcr,w))) * sum(ct,p38_cost_share(ct,i2,req)); - - -*' The equation above shows that factor requirement costs `vm_cost_prod_costs` mainly -*' depend on area harvested `vm_area` and average regional land-use intensity -*' levels `vm_tau`. Multiplying the land-use intensity increase increases -*' since 1995 with average regional yields `f38_region_yield` gives the -*' average regional yield. Multiplied with the area under production it gives -*' the production of this location assuming an average yield. Multiplied with -*' estimated factor requirement costs per volume `p38_fac_req` returns the -*' total factor costs, which multiplied by p38_cost_share gives us a results costs differentiated -*' by factor (capital or labor)'. -*' -*' The crop-and-water specific factor costs per volume of crop production -*' `f38_fac_req` are obtained from @narayanan_gtap7_2008. Splitting factors -*' costs into costs under irrigation and under rainfed production was performed -*' based on the methodology described in @Calzadilla2011GTAP. -*' -*' In this realization, regardless of the cellular productivity, the factor -*' costs per area are identical for all cells within a region. This implicitly -*' gives an incentive to allocate and concentrate production to highly -*' productive cells. diff --git a/modules/38_factor_costs/mixed_reg_feb17/input.gms b/modules/38_factor_costs/mixed_reg_feb17/input.gms deleted file mode 100644 index 7f6d5fd0a5..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/input.gms +++ /dev/null @@ -1,37 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -scalar -s38_factor_irrigation Factor to increase irrigation costs / 1 / -s38_shock_year Year from which policy shock will be implemented / 1995 / -; - - -table f38_fac_req(i,kcr,w) Factor requirement costs (USD05MER per tDM) -$ondelim -$include "./modules/38_factor_costs/mixed_reg_feb17/input/f38_fac_req_reg.csv" -$offdelim; - - -table f38_region_yield(i,kcr) Regional crop yields (tDM per ha) -$ondelim -$include "./modules/38_factor_costs/mixed_reg_feb17/input/f38_region_yield.csv" -$offdelim; - -parameter f38_reg_parameters(reg) Parameters for capital share regression -/ -$ondelim -$include "./modules/38_factor_costs/input/f38_regression_cap_share.csv" -$offdelim -/ -; - -table f38_historical_share(t_all,i) Historical capital share -$ondelim -$include "./modules/38_factor_costs/input/f38_historical_share.csv" -$offdelim -; diff --git a/modules/38_factor_costs/mixed_reg_feb17/input/files b/modules/38_factor_costs/mixed_reg_feb17/input/files deleted file mode 100644 index 82b9b0f1b3..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/input/files +++ /dev/null @@ -1,3 +0,0 @@ -* list of files that are required here -f38_region_yield.csv -f38_fac_req_reg.csv diff --git a/modules/38_factor_costs/mixed_reg_feb17/not_used.txt b/modules/38_factor_costs/mixed_reg_feb17/not_used.txt deleted file mode 100644 index 674929dc3a..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/not_used.txt +++ /dev/null @@ -1,14 +0,0 @@ -# | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | MAgPIE License Exception, version 1.0 (see LICENSE file). -# | Contact: magpie@pik-potsdam.de - -name,type,reason -vm_prod_reg,input,questionnaire -pm_interest,input,questionnaire -pm_prod_init,input,questionnaire -vm_prod,input,questionnaire -pm_labor_prod,input,questionnaire -fm_wage_scaling,par,questionaire diff --git a/modules/38_factor_costs/mixed_reg_feb17/postsolve.gms b/modules/38_factor_costs/mixed_reg_feb17/postsolve.gms deleted file mode 100644 index 1618fd8afe..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/postsolve.gms +++ /dev/null @@ -1,17 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -*#################### R SECTION START (OUTPUT DEFINITIONS) ##################### - ov_cost_prod_crop(t,i,req,"marginal") = vm_cost_prod_crop.m(i,req); - oq38_cost_prod_crop(t,i,req,"marginal") = q38_cost_prod_crop.m(i,req); - ov_cost_prod_crop(t,i,req,"level") = vm_cost_prod_crop.l(i,req); - oq38_cost_prod_crop(t,i,req,"level") = q38_cost_prod_crop.l(i,req); - ov_cost_prod_crop(t,i,req,"upper") = vm_cost_prod_crop.up(i,req); - oq38_cost_prod_crop(t,i,req,"upper") = q38_cost_prod_crop.up(i,req); - ov_cost_prod_crop(t,i,req,"lower") = vm_cost_prod_crop.lo(i,req); - oq38_cost_prod_crop(t,i,req,"lower") = q38_cost_prod_crop.lo(i,req); -*##################### R SECTION END (OUTPUT DEFINITIONS) ###################### diff --git a/modules/38_factor_costs/mixed_reg_feb17/preloop.gms b/modules/38_factor_costs/mixed_reg_feb17/preloop.gms deleted file mode 100644 index 9b3fd41443..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/preloop.gms +++ /dev/null @@ -1,8 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -p38_fac_req(i,kcr,w) = f38_fac_req(i,kcr,w); diff --git a/modules/38_factor_costs/mixed_reg_feb17/presolve.gms b/modules/38_factor_costs/mixed_reg_feb17/presolve.gms deleted file mode 100644 index 7c2962d10d..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/presolve.gms +++ /dev/null @@ -1,22 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - - -p38_share_calibration(i) = f38_historical_share("y2010",i)-(f38_reg_parameters("slope")*log10(sum(i_to_iso(i,iso),im_gdp_pc_ppp_iso("y2010",iso)))+f38_reg_parameters("intercept")); - -if (m_year(t)<2010, - p38_cost_share(t,i,"capital") = f38_historical_share(t,i); - p38_cost_share(t,i,"labor") = 1 - f38_historical_share(t,i); - -elseif (m_year(t)>=2010), -p38_cost_share(t,i,"capital") = f38_reg_parameters("slope")*log10(sum(i_to_iso(i,iso),im_gdp_pc_ppp_iso(t,iso)))+f38_reg_parameters("intercept")+p38_share_calibration(i); -p38_cost_share(t,i,"labor") = 1 - p38_cost_share(t,i,"capital"); -); - -if (m_year(t)>s38_shock_year, - p38_fac_req(i,kcr,"irrigated") = f38_fac_req(i,kcr,"irrigated") * s38_factor_irrigation ; -); diff --git a/modules/38_factor_costs/mixed_reg_feb17/realization.gms b/modules/38_factor_costs/mixed_reg_feb17/realization.gms deleted file mode 100644 index c5d0bff23c..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/realization.gms +++ /dev/null @@ -1,32 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -*' @description This 'mixed' realization specifies factors costs to depend on -*' area harvested and agricultural land use intensity and corresponding average -*' production volumes. -*' Consequently, factor costs in this realization react on both: area under -*' production and average productivity of a region as captured by the $\tau$ -*' factor. A detailed description of the approach can be found -*' in @dietrich_forecasting_2014 with background information about the used -*' intensity measure in @dietrich_measuring_2012. -*' -*' @limitations This realization assumes that factor costs only depend on area -*' and average productivity of a region. Productivity differences within a -*' region are ignored. Therefore, cases in which the cellular productivity -*' levels affect factors costs are only partially accounted for. - - -*####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "sets" $include "./modules/38_factor_costs/mixed_reg_feb17/sets.gms" -$Ifi "%phase%" == "declarations" $include "./modules/38_factor_costs/mixed_reg_feb17/declarations.gms" -$Ifi "%phase%" == "input" $include "./modules/38_factor_costs/mixed_reg_feb17/input.gms" -$Ifi "%phase%" == "equations" $include "./modules/38_factor_costs/mixed_reg_feb17/equations.gms" -$Ifi "%phase%" == "scaling" $include "./modules/38_factor_costs/mixed_reg_feb17/scaling.gms" -$Ifi "%phase%" == "preloop" $include "./modules/38_factor_costs/mixed_reg_feb17/preloop.gms" -$Ifi "%phase%" == "presolve" $include "./modules/38_factor_costs/mixed_reg_feb17/presolve.gms" -$Ifi "%phase%" == "postsolve" $include "./modules/38_factor_costs/mixed_reg_feb17/postsolve.gms" -*######################## R SECTION END (PHASES) ############################### diff --git a/modules/38_factor_costs/mixed_reg_feb17/scaling.gms b/modules/38_factor_costs/mixed_reg_feb17/scaling.gms deleted file mode 100644 index f57a11cfac..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/scaling.gms +++ /dev/null @@ -1,6 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de diff --git a/modules/38_factor_costs/mixed_reg_feb17/sets.gms b/modules/38_factor_costs/mixed_reg_feb17/sets.gms deleted file mode 100644 index 2f4b8cb165..0000000000 --- a/modules/38_factor_costs/mixed_reg_feb17/sets.gms +++ /dev/null @@ -1,16 +0,0 @@ -*** | (C) 2008-2021 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of MAgPIE and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | MAgPIE License Exception, version 1.0 (see LICENSE file). -*** | Contact: magpie@pik-potsdam.de - -sets -req input requirements -/ labor, capital / - - reg regression parameters for capital calculation - /slope, intercept/ - ; - -*** EOF sets.gms *** diff --git a/modules/38_factor_costs/module.gms b/modules/38_factor_costs/module.gms index 7b7dd0a47c..b9fe948557 100644 --- a/modules/38_factor_costs/module.gms +++ b/modules/38_factor_costs/module.gms @@ -15,11 +15,10 @@ *' Thus, factor costs will contribute to and influence the choice of production *' pattern in the model. -*' @authors Jan Philipp Dietrich, Benjamin Bodirsky, Kristine Karstens, Edna J. Molina Bacca +*' @authors Jan Philipp Dietrich, Benjamin Bodirsky, Kristine Karstens, Edna J. Molina Bacca, Debbora Leip *###################### R SECTION START (MODULETYPES) ########################## -$Ifi "%factor_costs%" == "mixed_reg_feb17" $include "./modules/38_factor_costs/mixed_reg_feb17/realization.gms" $Ifi "%factor_costs%" == "per_ton_fao_may22" $include "./modules/38_factor_costs/per_ton_fao_may22/realization.gms" $Ifi "%factor_costs%" == "sticky_feb18" $include "./modules/38_factor_costs/sticky_feb18/realization.gms" $Ifi "%factor_costs%" == "sticky_labor" $include "./modules/38_factor_costs/sticky_labor/realization.gms" diff --git a/modules/38_factor_costs/per_ton_fao_may22/declarations.gms b/modules/38_factor_costs/per_ton_fao_may22/declarations.gms index 8e78b44488..772fe3332e 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/declarations.gms +++ b/modules/38_factor_costs/per_ton_fao_may22/declarations.gms @@ -6,7 +6,8 @@ *** | Contact: magpie@pik-potsdam.de equations -q38_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) +q38_cost_prod_crop_labor(i) Regional labor costs for plant production (mio. USD05MER per yr) +q38_cost_prod_crop_capital(i) Regional capital costs for plant production (mio. USD05MER per yr) ; positive variables @@ -21,7 +22,8 @@ i38_fac_req(t_all,i,kcr) Factor requirements (USD05MER per tDM) *#################### R SECTION START (OUTPUT DECLARATIONS) #################### parameters - ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) - oq38_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) + ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) + oq38_cost_prod_crop_labor(t,i,type) Regional labor costs for plant production (mio. USD05MER per yr) + oq38_cost_prod_crop_capital(t,i,type) Regional capital costs for plant production (mio. USD05MER per yr) ; *##################### R SECTION END (OUTPUT DECLARATIONS) ##################### diff --git a/modules/38_factor_costs/per_ton_fao_may22/equations.gms b/modules/38_factor_costs/per_ton_fao_may22/equations.gms index da70c8436f..847616399a 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/equations.gms +++ b/modules/38_factor_costs/per_ton_fao_may22/equations.gms @@ -7,10 +7,11 @@ *' @equations + q38_cost_prod_crop_labor(i2) .. + vm_cost_prod_crop(i2,"labor") =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr))) * sum(ct,p38_cost_share(ct,i2,"labor") * pm_labor_cost_scaling(ct,i2)); - q38_cost_prod_crop(i2,req) .. - vm_cost_prod_crop(i2,req) =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr)))* sum(ct,p38_cost_share(ct,i2,req)); - + q38_cost_prod_crop_capital(i2) .. + vm_cost_prod_crop(i2,"capital") =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr)))* sum(ct,p38_cost_share(ct,i2,"capital")); *' The factor costs for crops `vm_cost_prod_crop` are calculated as product of *' production quantity `vm_prod_reg` and crop-specific factor requirements @@ -19,6 +20,9 @@ *' from FAO Value of Production, to which the USDA factor cost share out of total *' costs was applied. Labor and capital costs are split by applying the corresponding *' share out of total factor costs. +*' To account for increased hourly labor costs in case of an external minimum wage, +*' the total labor costs are scaled by the corresponding factor from [36_employment]. +*' *' It is worth to mention again that the factor costs in this module *' do not include land rents (as MAgPIE calculates land rents endogenously), *' chemical fertilizer costs (as they are calculated in [50_nr_soil_budget] diff --git a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt index 8c4e248b0f..cf446d07df 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt +++ b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt @@ -12,4 +12,3 @@ pm_prod_init,par,questionnaire vm_tau,par,questionnaire fm_tau1995,par,questionnaire vm_area,par,questionnaire -fm_wage_scaling,par,questionaire diff --git a/modules/38_factor_costs/sticky_feb18/equations.gms b/modules/38_factor_costs/sticky_feb18/equations.gms index 2449536bd7..89429d5902 100644 --- a/modules/38_factor_costs/sticky_feb18/equations.gms +++ b/modules/38_factor_costs/sticky_feb18/equations.gms @@ -8,9 +8,11 @@ *' @equations *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. +*' To account for increased hourly labor costs in case of an external minimum wage, +*' the total labor costs are scaled by the corresponding factor from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_variable_costs(ct,i2,kcr))) + =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_variable_costs(ct,i2,kcr) * pm_labor_cost_scaling(ct,i2))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/38_factor_costs/sticky_feb18/not_used.txt b/modules/38_factor_costs/sticky_feb18/not_used.txt index 9c4cc386e2..7fd9a351b8 100644 --- a/modules/38_factor_costs/sticky_feb18/not_used.txt +++ b/modules/38_factor_costs/sticky_feb18/not_used.txt @@ -8,4 +8,3 @@ name,type,reason vm_tau,par,questionnaire fm_tau1995,par,questionnaire vm_area,par,questionnaire -fm_wage_scaling,par,questionaire diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index bbe1bb1ff1..3a92c38958 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -22,9 +22,11 @@ =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. +*' To account for increased hourly labor costs in case of an external minimum wage, +*' the total labor costs are scaled by the corresponding factor from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_labor_need(j2,kcr) * s38_wage * sum(ct, fm_wage_scaling(ct,i2)))) + =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_labor_need(j2,kcr) * s38_wage * sum(ct, pm_labor_cost_scaling(ct,i2)))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/70_livestock/fbask_jan16/declarations.gms b/modules/70_livestock/fbask_jan16/declarations.gms index 02c0b7ca5a..9b95c0006f 100644 --- a/modules/70_livestock/fbask_jan16/declarations.gms +++ b/modules/70_livestock/fbask_jan16/declarations.gms @@ -14,7 +14,8 @@ positive variables equations q70_feed(i,kap,kall) Regional feed demand - q70_cost_prod_liv(i,req) Regional factor input costs for livestock production + q70_cost_prod_liv_labor(i) Regional labor costs for livestock production + q70_cost_prod_liv_capital(i) Regional capital costs for livestock production q70_cost_prod_fish(i) Regional factor input costs for fish production ; @@ -26,7 +27,7 @@ parameters p70_incr_cattle(t,i) Change in estimated cattle stocks attributed to food demand projections (1) pm_past_mngmnt_factor(t,i) Regional pasture management intensification factor (1) i70_cereal_scp_fadeout(t_all,i) Cereal feed fadeout (share 0-1) to be replaced by SCP (1) - i70_foddr_scp_fadeout(t_all,i) Fooder fadeout (share 0-1) to be replaced by SCP (1) + i70_foddr_scp_fadeout(t_all,i) Fooder fadeout (share 0-1) to be replaced by SCP (1) p70_country_dummy(iso) Dummy parameter indicating whether country is affected by feed scenarios (1) p70_feedscen_region_shr(t_all,i) Weighted share of region with regards to feed scenario of countries (1) p70_cost_share_livst(t,i,req) Capital and labor shares of the regional factor costs for plant production for livestock (1) @@ -37,11 +38,12 @@ parameters *#################### R SECTION START (OUTPUT DECLARATIONS) #################### parameters - ov_dem_feed(t,i,kap,kall,type) Regional feed demand including byproducts (mio. tDM per yr) - ov_cost_prod_livst(t,i,req,type) Livestock factor costs (mio. USD05MER per yr) - ov_cost_prod_fish(t,i,type) Fish factor costs (mio. USD05MER per yr) - oq70_feed(t,i,kap,kall,type) Regional feed demand - oq70_cost_prod_liv(t,i,req,type) Regional factor input costs for livestock production - oq70_cost_prod_fish(t,i,type) Regional factor input costs for fish production + ov_dem_feed(t,i,kap,kall,type) Regional feed demand including byproducts (mio. tDM per yr) + ov_cost_prod_livst(t,i,req,type) Livestock factor costs (mio. USD05MER per yr) + ov_cost_prod_fish(t,i,type) Fish factor costs (mio. USD05MER per yr) + oq70_feed(t,i,kap,kall,type) Regional feed demand + oq70_cost_prod_liv_labor(t,i,type) Regional labor costs for livestock production + oq70_cost_prod_liv_capital(t,i,type) Regional capital costs for livestock production + oq70_cost_prod_fish(t,i,type) Regional factor input costs for fish production ; *##################### R SECTION END (OUTPUT DECLARATIONS) ##################### diff --git a/modules/70_livestock/fbask_jan16/equations.gms b/modules/70_livestock/fbask_jan16/equations.gms index 97c4a4fdba..3268d3fcfc 100644 --- a/modules/70_livestock/fbask_jan16/equations.gms +++ b/modules/70_livestock/fbask_jan16/equations.gms @@ -29,11 +29,20 @@ q70_feed(i2,kap,kall) .. *' `i70_cost_regr(i,kli,"cost_regr_b")` is set to zero in the case of livestock *' products generated in monogastric systems. -q70_cost_prod_liv(i2,req) .. - vm_cost_prod_livst(i2,req) =e= sum(kli, vm_prod_reg(i2,kli) +*' To account for increased hourly labor costs in case of an external minimum wage, +*' the total labor costs are scaled by the corresponding factor from [36_employment]. + +q70_cost_prod_liv_labor(i2) .. + vm_cost_prod_livst(i2,"labor") =e= sum(kli, vm_prod_reg(i2,kli) + *(i70_cost_regr(i2,kli,"cost_regr_a") + i70_cost_regr(i2,kli,"cost_regr_b") + *sum((ct, sys_to_kli(sys,kli)),i70_livestock_productivity(ct,i2,sys)))) + *sum(ct, p70_cost_share_livst(ct,i2,"labor")) * sum(ct, pm_labor_cost_scaling(ct,i2)); + +q70_cost_prod_liv_capital(i2) .. + vm_cost_prod_livst(i2,"capital") =e= sum(kli, vm_prod_reg(i2,kli) *(i70_cost_regr(i2,kli,"cost_regr_a") + i70_cost_regr(i2,kli,"cost_regr_b") *sum((ct, sys_to_kli(sys,kli)),i70_livestock_productivity(ct,i2,sys)))) - *sum(ct, p70_cost_share_livst(ct,i2,req)); + *sum(ct, p70_cost_share_livst(ct,i2,"capital")); q70_cost_prod_fish(i2) .. vm_cost_prod_fish(i2) =e= From f5745e68fe8e3dd117d2a76ad1b3022013aa3136 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 23 Aug 2022 16:33:07 +0200 Subject: [PATCH 06/22] updated comments --- CITATION.cff | 5 ++++ modules/36_employment/exo_may22/equations.gms | 14 +++++----- modules/36_employment/exo_may22/preloop.gms | 27 ++++++++++++------- .../36_employment/exo_may22/realization.gms | 5 ++-- modules/36_employment/module.gms | 9 ++++--- 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index ced4ab2ed0..914c1a840b 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -77,6 +77,11 @@ authors: affiliation: "Potsdam Institute for Climate Impact Research" email: crawford@pik-potsdam.de + - family-names: Leip + given-names: Debbora + affiliation: "Potsdam Institute for Climate Impact Research" + email: leip@pik-potsdam.de + - family-names: Klein given-names: David affiliation: "Potsdam Institute for Climate Impact Research" diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index 8ce42b7d35..40c726290d 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -8,16 +8,16 @@ *' @equations +*' Employment is calculated as total labor costs devided by hourly labor costs and +*' average hours worked per employed person per year. Total labor costs include +*' labor costs from crop production (see [38_factor_costs]) and livestock production +*' (see [70_livestock]), and some labor costs for crop and livestock production +*' which are not covered by MAgPIE. + * excluding labor costs for crop residues (as this is not include in the * data on agricultural employment by the International Labour Organization) * and fish (as we cannot calibrate labor costs for fish to employment data) - q36_employment(i2) .. v36_employment(i2) - =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * + =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2) * pm_labor_cost_scaling(ct,i2))) * (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs_min_wage(ct,i2))); -*' Employment is calculated as total labor costs devided by hourly labor costs and -*' average hours worked per employed person per year. Total labor costs include -*' labor costs from crop production (see [38_factor_costs]) and livestock production -*' (see [70_livestock]), and some labor costs for crop and livestock production -*' which are not covered by MAgPIE. \ No newline at end of file diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 33f25e6921..01e9409b00 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -10,6 +10,8 @@ p36_calibration_hourly_costs(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f3 *f36_regr_hourly_costs("slope")+f36_regr_hourly_costs("intercept"))); p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_historic_ag_empl(t_past,iso)*f36_weekly_hours_iso(t_past,iso)*s36_weeks_in_year); +*' @code + *' Hourly labor costs are projected into the future by using a linear regression with *' GDPpcMER, which is calibrated such that historic values of agricultural employment *' are met. A threshold of 0.1$/h is used in the regression to avoid too low or @@ -18,32 +20,39 @@ p36_hourly_costs_iso(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_cost f36_regr_hourly_costs("intercept")+p36_calibration_hourly_costs(iso)), f36_regr_hourly_costs("threshold")); +*' @stop + p36_hourly_costs_iso(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); -* necessary increase in hourly labor costs in target year (2050) to match minimum wage -p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso("y2050",iso); -*' In case of a scenario with an external minimum wage we add a linear term to the original -*' labor costs, which starts from 0 in 2020, reaches the difference the minimum wage and -*' original hourly labor costs in 2050, and then decreases back to 0 in 2100. +*' In case of a scenario with an external global minimum wage we add a linear term to the original +*' labor costs, which starts from 0 in 2020, reaches the difference etween the minimum wage and +*' original hourly labor costs in 2050 (`p36_hourly_costs_increase`), and then decreases back to 0 in 2100. *' If the hourly labor costs would decrease again below he minimum wage after 2050, we keep them at minimum wage. *' If original labor costs are already high enough to meet the minimum wage, they are not changed. + +* necessary increase in hourly labor costs in target year (2050) to match minimum wage +p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso("y2050",iso); + p36_hourly_costs_iso_min_wage(t,iso) = p36_hourly_costs_iso(t,iso); +*' @code p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso(t,iso) + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, p36_hourly_costs_iso(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); +*' @stop + *' Hourly labor costs are then aggregated to regional level using the total hours worked in the last -*' year of t_past as weight. +*' year of `t_past` as weight. p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); p36_hourly_costs_min_wage(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_min_wage(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); -*' If productivity increase is assumed to be proportional to hourly labor costs also with external minimum wage, -*' total labor costs should not be scaled. Otherwise, the scaling factor between old and new hourly labor costs will -*' be applied to labor costs for crop production [38_factor_costs], livestock production [70_livestock], and the +*' If productivity is assumed to increase proportional to hourly labor costs also with external minimum wage, +*' total labor costs should not be scaled. Otherwise, the scaling factor between original and new hourly labor costs will +*' be applied to labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the *' non-MAgPIE labor costs. if (s36_scale_labor_costs eq 0, pm_labor_cost_scaling(t,i) = 1; diff --git a/modules/36_employment/exo_may22/realization.gms b/modules/36_employment/exo_may22/realization.gms index a7adf2ff91..c0d6fc24ef 100644 --- a/modules/36_employment/exo_may22/realization.gms +++ b/modules/36_employment/exo_may22/realization.gms @@ -8,8 +8,9 @@ *' @description This realization calculates agricultural employment based *' on it's relation to total labor costs. It therefore depends *' on the labor costs calculated in the modules [38_factor_costs] and -*' [70_livestock], but does not affect resulting total costs or production -*' patterns. +*' [70_livestock]. Resulting total costs or production patterns can be affected +*' if an external minimum wage is set, which increases labor costs for +*' crop and livestock production in [38_factor_costs] and [70_livestock]. *' @limitations Labor availability is not seen as a limiting factor for *' agricultural production, as the number of people employed is directly linked diff --git a/modules/36_employment/module.gms b/modules/36_employment/module.gms index 85c38ebe31..de5678793d 100644 --- a/modules/36_employment/module.gms +++ b/modules/36_employment/module.gms @@ -10,9 +10,12 @@ *' @description This module is used to calculate hourly labor costs in agriculutre *' and the number of people employed in crop and livestock production. -*' The calculation is based on labor costs in crop and livestock production -*' coming from [38_factor_costs] and [70_livestock], as well as GDP pc from -*' [09_drivers]. +*' Hourly labor costs are calculated based on a regression with GDP pc from [09_drivers]. +*' They can be increased by an externally set global minimum wage, and the module +*' provides a scaling factor for labor costs to [38_factor_costs] and [70_livestock], +*' to increase total labor costs according to the increase in hourly labor costs. +*' The calculation of employment then uses labor costs for crop and livestock production +*' coming from [38_factor_costs] and [70_livestock]. *' @authors Debbora Leip From 4681decce610be623b4a100fca9d1902831c740b Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 23 Aug 2022 17:02:45 +0200 Subject: [PATCH 07/22] changed variable naming --- .../36_employment/exo_may22/declarations.gms | 8 ++--- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/preloop.gms | 35 ++++++++----------- .../36_employment/exo_may22/realization.gms | 2 +- 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/modules/36_employment/exo_may22/declarations.gms b/modules/36_employment/exo_may22/declarations.gms index 741447a0f1..04a83ea6d5 100644 --- a/modules/36_employment/exo_may22/declarations.gms +++ b/modules/36_employment/exo_may22/declarations.gms @@ -15,11 +15,11 @@ positive variables ; parameters - p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) + p36_hourly_costs_iso_baseline(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) p36_hourly_costs_increase(iso) Difference between minimum hourly labor costs and actual hourly labor costs in 2050 (USDMER05 per hour) - p36_hourly_costs_iso_min_wage(t,iso) Hourly labor costs in agriculture on iso level after including minimum wage (USDMER05 per hour) - p36_hourly_costs(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) - p36_hourly_costs_min_wage(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) + p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level after including minimum wage (USDMER05 per hour) + p36_hourly_costs_baseline(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) + p36_hourly_costs(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) pm_labor_cost_scaling(t,i) Multiplicative factor describing increase in hourly labor costs to match minimum wage (1) p36_total_hours_worked(iso) Total hours worked by all employed people (mio. hours per year) p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index 40c726290d..54294beb17 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -19,5 +19,5 @@ * and fish (as we cannot calibrate labor costs for fish to employment data) q36_employment(i2) .. v36_employment(i2) =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2) * pm_labor_cost_scaling(ct,i2))) * - (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs_min_wage(ct,i2))); + (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2))); diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 01e9409b00..187da4f8ad 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -16,47 +16,42 @@ p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_hist *' GDPpcMER, which is calibrated such that historic values of agricultural employment *' are met. A threshold of 0.1$/h is used in the regression to avoid too low or *' negative hourly labor costs. -p36_hourly_costs_iso(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope")+ - f36_regr_hourly_costs("intercept")+p36_calibration_hourly_costs(iso)), - f36_regr_hourly_costs("threshold")); +p36_hourly_costs_iso_baseline(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope") + f36_regr_hourly_costs("intercept") + p36_calibration_hourly_costs(iso)), f36_regr_hourly_costs("threshold")); *' @stop -p36_hourly_costs_iso(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); +p36_hourly_costs_iso_baseline(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); -*' In case of a scenario with an external global minimum wage we add a linear term to the original -*' labor costs, which starts from 0 in 2020, reaches the difference etween the minimum wage and -*' original hourly labor costs in 2050 (`p36_hourly_costs_increase`), and then decreases back to 0 in 2100. -*' If the hourly labor costs would decrease again below he minimum wage after 2050, we keep them at minimum wage. -*' If original labor costs are already high enough to meet the minimum wage, they are not changed. - * necessary increase in hourly labor costs in target year (2050) to match minimum wage -p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso("y2050",iso); +p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso_baseline("y2050",iso); -p36_hourly_costs_iso_min_wage(t,iso) = p36_hourly_costs_iso(t,iso); +p36_hourly_costs_iso(t,iso) = p36_hourly_costs_iso_baseline(t,iso); *' @code -p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso(t,iso) + - max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); +*' In case of a scenario with an external global minimum wage we add a linear term to the baseline +*' hourly labor costs, which starts from 0 in 2020, reaches the difference etween the minimum wage and +*' baseline hourly labor costs in 2050 (`p36_hourly_costs_increase`), and then decreases back to 0 in 2100. +*' If the hourly labor costs would decrease again below he minimum wage after 2050, we keep them at minimum wage. +*' If baseline labor costs are already high enough to meet the minimum wage, they are not changed. -p36_hourly_costs_iso_min_wage(t,iso) $ ((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, - p36_hourly_costs_iso(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); +p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso_baseline(t,iso) + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); +p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, p36_hourly_costs_iso_baseline(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); *' @stop *' Hourly labor costs are then aggregated to regional level using the total hours worked in the last *' year of `t_past` as weight. -p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); -p36_hourly_costs_min_wage(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_min_wage(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +p36_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseline(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); *' If productivity is assumed to increase proportional to hourly labor costs also with external minimum wage, -*' total labor costs should not be scaled. Otherwise, the scaling factor between original and new hourly labor costs will +*' total labor costs should not be scaled. Otherwise, the scaling factor between baseline and increased hourly labor costs will *' be applied to labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the *' non-MAgPIE labor costs. if (s36_scale_labor_costs eq 0, pm_labor_cost_scaling(t,i) = 1; elseif (s36_scale_labor_costs eq 1), - pm_labor_cost_scaling(t,i) = p36_hourly_costs_min_wage(t,i) / p36_hourly_costs(t,i); + pm_labor_cost_scaling(t,i) = p36_hourly_costs(t,i) / p36_hourly_costs_baseline(t,i); ); diff --git a/modules/36_employment/exo_may22/realization.gms b/modules/36_employment/exo_may22/realization.gms index c0d6fc24ef..681ed5b42e 100644 --- a/modules/36_employment/exo_may22/realization.gms +++ b/modules/36_employment/exo_may22/realization.gms @@ -8,7 +8,7 @@ *' @description This realization calculates agricultural employment based *' on it's relation to total labor costs. It therefore depends *' on the labor costs calculated in the modules [38_factor_costs] and -*' [70_livestock]. Resulting total costs or production patterns can be affected +*' [70_livestock]. Resulting total costs and production patterns can be affected *' if an external minimum wage is set, which increases labor costs for *' crop and livestock production in [38_factor_costs] and [70_livestock]. From e0106a37d51f34b9b1401891d9ea250a71d11b2c Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 23 Aug 2022 17:17:11 +0200 Subject: [PATCH 08/22] bugfixes --- modules/36_employment/exo_may22/input/files | 1 - modules/38_factor_costs/per_ton_fao_may22/not_used.txt | 3 --- modules/38_factor_costs/sticky_feb18/not_used.txt | 3 --- modules/38_factor_costs/sticky_labor/not_used.txt | 3 --- 4 files changed, 10 deletions(-) diff --git a/modules/36_employment/exo_may22/input/files b/modules/36_employment/exo_may22/input/files index 7ecb4bca4a..d7ddcb6ef8 100644 --- a/modules/36_employment/exo_may22/input/files +++ b/modules/36_employment/exo_may22/input/files @@ -8,4 +8,3 @@ f36_unspecified_subsidies.csv f36_nonmagpie_factor_costs.csv f36_regression_cap_share.csv f36_historical_share.csv -fm_wage_scaling.csv diff --git a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt index cf446d07df..a76ea293ff 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt +++ b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt @@ -9,6 +9,3 @@ name,type,reason pm_interest,input,questionnaire vm_prod,input,questionnaire pm_prod_init,par,questionnaire -vm_tau,par,questionnaire -fm_tau1995,par,questionnaire -vm_area,par,questionnaire diff --git a/modules/38_factor_costs/sticky_feb18/not_used.txt b/modules/38_factor_costs/sticky_feb18/not_used.txt index 7fd9a351b8..a40b473c2f 100644 --- a/modules/38_factor_costs/sticky_feb18/not_used.txt +++ b/modules/38_factor_costs/sticky_feb18/not_used.txt @@ -5,6 +5,3 @@ # | MAgPIE License Exception, version 1.0 (see LICENSE file). # | Contact: magpie@pik-potsdam.de name,type,reason -vm_tau,par,questionnaire -fm_tau1995,par,questionnaire -vm_area,par,questionnaire diff --git a/modules/38_factor_costs/sticky_labor/not_used.txt b/modules/38_factor_costs/sticky_labor/not_used.txt index 790364668a..e10fdd9ad7 100644 --- a/modules/38_factor_costs/sticky_labor/not_used.txt +++ b/modules/38_factor_costs/sticky_labor/not_used.txt @@ -6,6 +6,3 @@ # | Contact: magpie@pik-potsdam.de name,type,reason vm_prod_reg,input,not used -vm_tau,par,questionnaire -fm_tau1995,par,questionnaire -vm_area,par,questionnaire From 9b435ff6bc02b8d74299c9f8c2ece960a53eef94 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 23 Aug 2022 17:21:07 +0200 Subject: [PATCH 09/22] bugfix --- modules/36_employment/exo_may22/presolve.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/36_employment/exo_may22/presolve.gms b/modules/36_employment/exo_may22/presolve.gms index e41906b82a..71d0a85fb2 100644 --- a/modules/36_employment/exo_may22/presolve.gms +++ b/modules/36_employment/exo_may22/presolve.gms @@ -20,6 +20,6 @@ elseif (m_year(t)>=2010), *' categories not covered by MAgPIE (i.e. wool, beeswax, honey, silk-worms), which *' are both kept constant for future years. -p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * pm_labor_cost_scaling(ct,i2); +p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * pm_labor_cost_scaling(t,i); *' @stop From bd33ed23e507acc13cd50644f16808fd9e443160 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Thu, 8 Sep 2022 11:17:04 +0200 Subject: [PATCH 10/22] updated documentation of employment module --- modules/36_employment/exo_may22/preloop.gms | 22 ++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 187da4f8ad..4695147a1a 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -7,7 +7,7 @@ * get calibration factors and aggregation weight p36_calibration_hourly_costs(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_hist_hourly_costs(t_past,iso)-(im_gdp_pc_mer_iso(t_past,iso) - *f36_regr_hourly_costs("slope")+f36_regr_hourly_costs("intercept"))); + *f36_regr_hourly_costs("slope")+f36_regr_hourly_costs("intercept"))); p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_historic_ag_empl(t_past,iso)*f36_weekly_hours_iso(t_past,iso)*s36_weeks_in_year); *' @code @@ -26,25 +26,28 @@ p36_hourly_costs_iso_baseline(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_ho * necessary increase in hourly labor costs in target year (2050) to match minimum wage p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso_baseline("y2050",iso); -p36_hourly_costs_iso(t,iso) = p36_hourly_costs_iso_baseline(t,iso); +p36_hourly_costs_iso(t,iso) = p36_hourly_costs_iso_baseline(t,iso); *' @code *' In case of a scenario with an external global minimum wage we add a linear term to the baseline -*' hourly labor costs, which starts from 0 in 2020, reaches the difference etween the minimum wage and -*' baseline hourly labor costs in 2050 (`p36_hourly_costs_increase`), and then decreases back to 0 in 2100. -*' If the hourly labor costs would decrease again below he minimum wage after 2050, we keep them at minimum wage. -*' If baseline labor costs are already high enough to meet the minimum wage, they are not changed. +*' hourly labor costs, starting from 0 zero in 2020 and increasing such that resulting hourly labor costs will match +*' the minimum wage in 2050. After 2050 the additional term is decreased again, reaching 0 in 2100 (where baseline +*' hourly labor costs and new hourly labor costs will match again). +*' In case this means that hourly labor costs would decrease again below the minimum wage after 2050, we keep them +*' at minimum wage. +*' If baseline hourly labor costs are already high enough to meet the minimum wage in 2050, they are not changed. +*' @stop p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso_baseline(t,iso) + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, p36_hourly_costs_iso_baseline(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); -*' @stop -*' Hourly labor costs are then aggregated to regional level using the total hours worked in the last -*' year of `t_past` as weight. +* Hourly labor costs are then aggregated to regional level using the total hours worked in the last +* year of `t_past` as weight. p36_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseline(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +*' @code *' If productivity is assumed to increase proportional to hourly labor costs also with external minimum wage, *' total labor costs should not be scaled. Otherwise, the scaling factor between baseline and increased hourly labor costs will *' be applied to labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the @@ -54,4 +57,5 @@ if (s36_scale_labor_costs eq 0, elseif (s36_scale_labor_costs eq 1), pm_labor_cost_scaling(t,i) = p36_hourly_costs(t,i) / p36_hourly_costs_baseline(t,i); ); +*' @stop From 27676816347deae489957060a94f71c7bd642567 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 20 Sep 2022 10:18:36 +0200 Subject: [PATCH 11/22] fixed calibration of share parameter, updated changelog --- CHANGELOG.md | 5 +++++ config/default.cfg | 5 +++++ .../38_factor_costs/sticky_labor/declarations.gms | 14 ++++++++------ modules/38_factor_costs/sticky_labor/input.gms | 1 + modules/38_factor_costs/sticky_labor/preloop.gms | 2 ++ modules/38_factor_costs/sticky_labor/presolve.gms | 12 ++++++++---- 6 files changed, 29 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03a751c47a..2a9252a157 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### changed +- **config** new switches `s36_minimum_wage`, `s36_scale_labor_costs`, and `s38_fix_capital_need` +- **38_factor_costs** and **70_livestock** included labor cost scaling in case of minimum wage scenario +- **36_employment** included calculations for of minimum wage scenario - **scripts** FSDP_collect handles the health impacts data provided by Marco Springmann, distributed it into the scenario's various reports. It performs a similar operation for global nutrient surplus (which must be calculated on the grid-level and then aggregated). - **13_tc** relaxed vm_tau upper limit - **scripts** updated FSEC start and output scripts @@ -31,9 +34,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **57_maccs** added new Marginal Abatement Cost Curve (MACCs) data set from PBL (PBL2022) ### removed +- **38_factor_costs** removed `mixed_reg_feb17` realization - **15_food** removed read-in of non-needed input file "f15_calib_factor_FAOfsupply_iso" ### fixed +- **38_factor_costs** fixed calibration of share parameter in `sticky_labor` realization - **43_water_availability** added missing years after 2100 in "f43_wat_avail" to avoid infeasibilities in coupled runs with less_ts timesteps - **scripts** fixed some bugs related to background execution of start/output scripts diff --git a/config/default.cfg b/config/default.cfg index f922561aae..837e97eb87 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -905,6 +905,11 @@ cfg$gms$s38_shock_year <- 1995 #default = 1995 # * same version (glo or reg) should be chosen for c70_fac_req_regr for consistency. cfg$gms$c38_fac_req <- "glo" # default "glo" +# * Only relevant for sticky_labor implementation: scalar to determine until which year +# * the capital need (per unit of output) should be fixed to start value (i.e. not +# * allowing for subsititution between labor and capital). + +cfg$gms$s38_fix_capital_need <- 2020 # default 2020 # ***--------------------- 39_landconversion ----------------------------- # * (calib): Costs for cropland expansion are scaled with a regional calibration factor diff --git a/modules/38_factor_costs/sticky_labor/declarations.gms b/modules/38_factor_costs/sticky_labor/declarations.gms index dbf9d7a556..da2dd48224 100644 --- a/modules/38_factor_costs/sticky_labor/declarations.gms +++ b/modules/38_factor_costs/sticky_labor/declarations.gms @@ -10,15 +10,15 @@ equations q38_cost_prod_capital(i) Regional capital input costs for plant production (mio USD05MER) q38_investment_immobile(j,kcr) Cellular immobile investments into farm capital (mio USD05MER) q38_investment_mobile(j) Cellular mobile investments into farm capital (mio USD05MER) - q38_ces_prodfun(j,kcr) CES production function for one unit of output (1) + q38_ces_prodfun(j,kcr) CES production function for one unit of output (1) ; positive variables vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio USD05MER per yr) v38_investment_immobile(j,kcr) Investment costs in immobile farm capital (mio USD05MER per yr) v38_investment_mobile(j) Investment costs in mobile farm capital (mio USD05MER per yr) - v38_labor_need(j,kcr) Labor required per unit of output (hours per ton DM) - v38_capital_need(j,kcr,mobil38) Captial required per unit of output (USD05MER per ton DM) + v38_labor_need(j,kcr) Labor required per unit of output (hours per ton DM) + v38_capital_need(j,kcr,mobil38) Captial required per unit of output (USD05MER per ton DM) ; parameters @@ -32,14 +32,16 @@ parameters p38_croparea_start(j,w,kcr) Agricultural land initialization area (mio. ha) - i38_ces_shr(j,kcr) Share parameter for CES function (1) - i38_ces_scale(j,kcr) Scaling factor for total factor productivity (1) + i38_ces_shr(j,kcr) Share parameter for CES function (1) + i38_ces_scale(j,kcr) Scaling factor for total factor productivity (1) + p38_intr_depr(t,i) Factor from interest and depreciation rate (1) + i38_fac_req(t_all,i,kcr) Factor requirements (USD05MER per tDM) ; scalars - s38_ces_elast_par Elasticity parameter for CES function (1) + s38_ces_elast_par Elasticity parameter for CES function (1) ; *#################### R SECTION START (OUTPUT DECLARATIONS) #################### diff --git a/modules/38_factor_costs/sticky_labor/input.gms b/modules/38_factor_costs/sticky_labor/input.gms index b3653b8985..e217090bf6 100644 --- a/modules/38_factor_costs/sticky_labor/input.gms +++ b/modules/38_factor_costs/sticky_labor/input.gms @@ -17,6 +17,7 @@ s38_immobile immobile capital (share) / 1 / * The actual value does not matter because it cancels out. s38_wage Wage for labor in CES function (USD05MER per hour) / 1 / s38_ces_elast_subst Elasticity of substitution in CES function (1) / 0.3 / +s38_fix_capital_need Year until which capital requirements are fixed / 2100 / ; parameter f38_fac_req(kcr) Factor requirement costs in 2005 (USD05MER per tDM) diff --git a/modules/38_factor_costs/sticky_labor/preloop.gms b/modules/38_factor_costs/sticky_labor/preloop.gms index c50a897e8e..8068b9b489 100644 --- a/modules/38_factor_costs/sticky_labor/preloop.gms +++ b/modules/38_factor_costs/sticky_labor/preloop.gms @@ -7,3 +7,5 @@ * Calibrate the CES function: s38_ces_elast_par = (1/s38_ces_elast_subst) - 1 ; + +p38_intr_depr(t,i) = (1-s38_depreciation_rate) * pm_interest(t,i)/(1+pm_interest(t,i)) + s38_depreciation_rate; diff --git a/modules/38_factor_costs/sticky_labor/presolve.gms b/modules/38_factor_costs/sticky_labor/presolve.gms index ab0f3965af..e3e5450702 100644 --- a/modules/38_factor_costs/sticky_labor/presolve.gms +++ b/modules/38_factor_costs/sticky_labor/presolve.gms @@ -40,12 +40,16 @@ v38_labor_need.l(j,kcr) = sum(cell(i,j),p38_variable_costs(t,i,kcr)); v38_labor_need.up(j,kcr) = 10 * sum(cell(i,j),p38_variable_costs(t,i,kcr)); * set bounds for captial requirements -v38_capital_need.lo(j,kcr,mobil38) = 0.1*sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); -v38_capital_need.l(j,kcr,mobil38) = sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); -v38_capital_need.up(j,kcr,mobil38) = 10 * sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); +if (m_year(t) <= s38_fix_capital_need, + v38_capital_need.fx(j,kcr,mobil38) = sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); +else + v38_capital_need.lo(j,kcr,mobil38) = 0.1*sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); + v38_capital_need.l(j,kcr,mobil38) = sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); + v38_capital_need.up(j,kcr,mobil38) = 10 * sum(cell(i,j),p38_capital_need(t,i,kcr,mobil38)); +); * update CES parameters -i38_ces_shr(j,kcr) = sum(cell(i,j), (pm_interest(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (pm_interest(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + s38_wage * v38_labor_need.l(j,kcr)**(1 + s38_ces_elast_par))); +i38_ces_shr(j,kcr) = sum(cell(i,j), (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + s38_wage * v38_labor_need.l(j,kcr)**(1 + s38_ces_elast_par))); i38_ces_scale(j,kcr) = sum(cell(i,j), 1/([i38_ces_shr(j,kcr) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(-s38_ces_elast_par) + (1 - i38_ces_shr(j,kcr)) * v38_labor_need.l(j,kcr)**(-s38_ces_elast_par)]**(-1/s38_ces_elast_par))); *** Variable labor costs END From a1761cb1f121bd038165b20b599e409c7dc42847 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 21 Sep 2022 14:20:04 +0200 Subject: [PATCH 12/22] updated documentation --- modules/36_employment/exo_may22/preloop.gms | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 4695147a1a..ae691e0630 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -14,8 +14,8 @@ p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_hist *' Hourly labor costs are projected into the future by using a linear regression with *' GDPpcMER, which is calibrated such that historic values of agricultural employment -*' are met. A threshold of 0.1$/h is used in the regression to avoid too low or -*' negative hourly labor costs. +*' are met. A threshold is used in the regression to avoid too low or negative hourly +*' labor costs. p36_hourly_costs_iso_baseline(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope") + f36_regr_hourly_costs("intercept") + p36_calibration_hourly_costs(iso)), f36_regr_hourly_costs("threshold")); *' @stop From 33aa3c9e736b05acc0d25dc288f8808f64f9dc47 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 21 Sep 2022 14:37:03 +0200 Subject: [PATCH 13/22] bugfix --- modules/36_employment/exo_may22/equations.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index 54294beb17..4a846fb148 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -18,6 +18,6 @@ * data on agricultural employment by the International Labour Organization) * and fish (as we cannot calibrate labor costs for fish to employment data) q36_employment(i2) .. v36_employment(i2) - =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2) * pm_labor_cost_scaling(ct,i2))) * + =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2))); From a0b8140274463a36612d25267ad398de026b2273 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 27 Sep 2022 10:28:11 +0200 Subject: [PATCH 14/22] updated descriptions --- .../per_ton_fao_may22/declarations.gms | 14 +++++++------- .../38_factor_costs/sticky_feb18/declarations.gms | 14 +++++++------- .../38_factor_costs/sticky_labor/declarations.gms | 14 +++++++------- modules/70_livestock/fbask_jan16/declarations.gms | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/modules/38_factor_costs/per_ton_fao_may22/declarations.gms b/modules/38_factor_costs/per_ton_fao_may22/declarations.gms index 772fe3332e..da4fdf159b 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/declarations.gms +++ b/modules/38_factor_costs/per_ton_fao_may22/declarations.gms @@ -6,24 +6,24 @@ *** | Contact: magpie@pik-potsdam.de equations -q38_cost_prod_crop_labor(i) Regional labor costs for plant production (mio. USD05MER per yr) -q38_cost_prod_crop_capital(i) Regional capital costs for plant production (mio. USD05MER per yr) +q38_cost_prod_crop_labor(i) Regional labor costs for crop production (mio. USD05MER per yr) +q38_cost_prod_crop_capital(i) Regional capital costs for crop production (mio. USD05MER per yr) ; positive variables -vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) +vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for crop production (mio. USD05MER per yr) ; parameter -p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for plant production (1) +p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for crop production (1) p38_share_calibration(i) Summation factor used to calibrate calculated capital shares with historical values (1) i38_fac_req(t_all,i,kcr) Factor requirements (USD05MER per tDM) ; *#################### R SECTION START (OUTPUT DECLARATIONS) #################### parameters - ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio. USD05MER per yr) - oq38_cost_prod_crop_labor(t,i,type) Regional labor costs for plant production (mio. USD05MER per yr) - oq38_cost_prod_crop_capital(t,i,type) Regional capital costs for plant production (mio. USD05MER per yr) + ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for crop production (mio. USD05MER per yr) + oq38_cost_prod_crop_labor(t,i,type) Regional labor costs for crop production (mio. USD05MER per yr) + oq38_cost_prod_crop_capital(t,i,type) Regional capital costs for crop production (mio. USD05MER per yr) ; *##################### R SECTION END (OUTPUT DECLARATIONS) ##################### diff --git a/modules/38_factor_costs/sticky_feb18/declarations.gms b/modules/38_factor_costs/sticky_feb18/declarations.gms index a17eb32b03..5dc43d5085 100644 --- a/modules/38_factor_costs/sticky_feb18/declarations.gms +++ b/modules/38_factor_costs/sticky_feb18/declarations.gms @@ -6,14 +6,14 @@ *** | Contact: magpie@pik-potsdam.de equations - q38_cost_prod_labor(i) Regional labor input costs for plant production (mio USD05MER) - q38_cost_prod_capital(i) Regional capital input costs for plant production (mio USD05MER) + q38_cost_prod_labor(i) Regional labor input costs for crop production (mio USD05MER) + q38_cost_prod_capital(i) Regional capital input costs for crop production (mio USD05MER) q38_investment_immobile(j,kcr) Cellular immobile investments into farm capital (mio USD05MER) q38_investment_mobile(j) Cellular mobile investments into farm capital (mio USD05MER) ; positive variables - vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio USD05MER per yr) + vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) v38_investment_immobile(j,kcr) Investment costs in immobile farm capital (mio USD05MER per yr) v38_investment_mobile(j) Investment costs in mobile farm capital (mio USD05MER per yr) ; @@ -24,7 +24,7 @@ parameters p38_capital_immobile(t,j,kcr) Preexisting immobile capital stocks before investment (mio USD05MER) p38_capital_mobile(t,j) Preexisting mobile capital stocks before investment (mio USD05MER) - p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for plant production (1) + p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for crop production (1) p38_share_calibration(i) Summation factor used to calibrate calculated capital shares with historical values (1) p38_croparea_start(j,w,kcr) Agricultural land initialization area (mio. ha) @@ -35,11 +35,11 @@ parameters *#################### R SECTION START (OUTPUT DECLARATIONS) #################### parameters - ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio USD05MER per yr) + ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) ov38_investment_immobile(t,j,kcr,type) Investment costs in immobile farm capital (mio USD05MER per yr) ov38_investment_mobile(t,j,type) Investment costs in mobile farm capital (mio USD05MER per yr) - oq38_cost_prod_labor(t,i,type) Regional labor input costs for plant production (mio USD05MER) - oq38_cost_prod_capital(t,i,type) Regional capital input costs for plant production (mio USD05MER) + oq38_cost_prod_labor(t,i,type) Regional labor input costs for crop production (mio USD05MER) + oq38_cost_prod_capital(t,i,type) Regional capital input costs for crop production (mio USD05MER) oq38_investment_immobile(t,j,kcr,type) Cellular immobile investments into farm capital (mio USD05MER) oq38_investment_mobile(t,j,type) Cellular mobile investments into farm capital (mio USD05MER) ; diff --git a/modules/38_factor_costs/sticky_labor/declarations.gms b/modules/38_factor_costs/sticky_labor/declarations.gms index da2dd48224..41590b703f 100644 --- a/modules/38_factor_costs/sticky_labor/declarations.gms +++ b/modules/38_factor_costs/sticky_labor/declarations.gms @@ -6,15 +6,15 @@ *** | Contact: magpie@pik-potsdam.de equations - q38_cost_prod_labor(i) Regional labor input costs for plant production (mio USD05MER) - q38_cost_prod_capital(i) Regional capital input costs for plant production (mio USD05MER) + q38_cost_prod_labor(i) Regional labor input costs for crop production (mio USD05MER) + q38_cost_prod_capital(i) Regional capital input costs for crop production (mio USD05MER) q38_investment_immobile(j,kcr) Cellular immobile investments into farm capital (mio USD05MER) q38_investment_mobile(j) Cellular mobile investments into farm capital (mio USD05MER) q38_ces_prodfun(j,kcr) CES production function for one unit of output (1) ; positive variables - vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for plant production (mio USD05MER per yr) + vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) v38_investment_immobile(j,kcr) Investment costs in immobile farm capital (mio USD05MER per yr) v38_investment_mobile(j) Investment costs in mobile farm capital (mio USD05MER per yr) v38_labor_need(j,kcr) Labor required per unit of output (hours per ton DM) @@ -27,7 +27,7 @@ parameters p38_capital_immobile(t,j,kcr) Preexisting immobile capital stocks before investment (mio USD05MER) p38_capital_mobile(t,j) Preexisting mobile capital stocks before investment (mio USD05MER) - p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for plant production (1) + p38_cost_share(t,i,req) Capital and labor shares of the regional factor costs for crop production (1) p38_share_calibration(i) Summation factor used to calibrate calculated capital shares with historical values (1) p38_croparea_start(j,w,kcr) Agricultural land initialization area (mio. ha) @@ -46,13 +46,13 @@ scalars *#################### R SECTION START (OUTPUT DECLARATIONS) #################### parameters - ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for plant production (mio USD05MER per yr) + ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) ov38_investment_immobile(t,j,kcr,type) Investment costs in immobile farm capital (mio USD05MER per yr) ov38_investment_mobile(t,j,type) Investment costs in mobile farm capital (mio USD05MER per yr) ov38_labor_need(t,j,kcr,type) Labor required per unit of output (hours per ton DM) ov38_capital_need(t,j,kcr,mobil38,type) Captial required per unit of output (USD05MER per ton DM) - oq38_cost_prod_labor(t,i,type) Regional labor input costs for plant production (mio USD05MER) - oq38_cost_prod_capital(t,i,type) Regional capital input costs for plant production (mio USD05MER) + oq38_cost_prod_labor(t,i,type) Regional labor input costs for crop production (mio USD05MER) + oq38_cost_prod_capital(t,i,type) Regional capital input costs for crop production (mio USD05MER) oq38_investment_immobile(t,j,kcr,type) Cellular immobile investments into farm capital (mio USD05MER) oq38_investment_mobile(t,j,type) Cellular mobile investments into farm capital (mio USD05MER) oq38_ces_prodfun(t,j,kcr,type) CES production function for one unit of output (1) diff --git a/modules/70_livestock/fbask_jan16/declarations.gms b/modules/70_livestock/fbask_jan16/declarations.gms index 9b95c0006f..e025f70550 100644 --- a/modules/70_livestock/fbask_jan16/declarations.gms +++ b/modules/70_livestock/fbask_jan16/declarations.gms @@ -27,7 +27,7 @@ parameters p70_incr_cattle(t,i) Change in estimated cattle stocks attributed to food demand projections (1) pm_past_mngmnt_factor(t,i) Regional pasture management intensification factor (1) i70_cereal_scp_fadeout(t_all,i) Cereal feed fadeout (share 0-1) to be replaced by SCP (1) - i70_foddr_scp_fadeout(t_all,i) Fooder fadeout (share 0-1) to be replaced by SCP (1) + i70_foddr_scp_fadeout(t_all,i) Fodder fadeout (share 0-1) to be replaced by SCP (1) p70_country_dummy(iso) Dummy parameter indicating whether country is affected by feed scenarios (1) p70_feedscen_region_shr(t_all,i) Weighted share of region with regards to feed scenario of countries (1) p70_cost_share_livst(t,i,req) Capital and labor shares of the regional factor costs for plant production for livestock (1) From 5f86f1361936d5bed7f41bb45239dcf719eb0b42 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 27 Sep 2022 20:32:05 +0200 Subject: [PATCH 15/22] replaced s38_wage by wages from eomployment module --- .../36_employment/exo_may22/declarations.gms | 4 ++-- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/input.gms | 4 ++-- modules/36_employment/exo_may22/preloop.gms | 6 +++--- .../per_ton_fao_may22/not_used.txt | 2 ++ .../per_ton_fao_may22/postsolve.gms | 20 +++++++++++-------- .../sticky_feb18/declarations.gms | 2 +- .../sticky_feb18/equations.gms | 2 +- .../38_factor_costs/sticky_feb18/not_used.txt | 2 ++ .../38_factor_costs/sticky_feb18/presolve.gms | 4 ++-- .../sticky_labor/declarations.gms | 6 +++--- .../sticky_labor/equations.gms | 6 +++--- .../38_factor_costs/sticky_labor/input.gms | 5 +---- .../38_factor_costs/sticky_labor/not_used.txt | 1 + .../sticky_labor/postsolve.gms | 8 ++++---- .../38_factor_costs/sticky_labor/presolve.gms | 14 ++++++------- 16 files changed, 47 insertions(+), 41 deletions(-) diff --git a/modules/36_employment/exo_may22/declarations.gms b/modules/36_employment/exo_may22/declarations.gms index 04a83ea6d5..65b2dcd02e 100644 --- a/modules/36_employment/exo_may22/declarations.gms +++ b/modules/36_employment/exo_may22/declarations.gms @@ -18,8 +18,8 @@ parameters p36_hourly_costs_iso_baseline(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) p36_hourly_costs_increase(iso) Difference between minimum hourly labor costs and actual hourly labor costs in 2050 (USDMER05 per hour) p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level after including minimum wage (USDMER05 per hour) - p36_hourly_costs_baseline(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) - p36_hourly_costs(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) + pm_hourly_costs_baseline(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) + pm_hourly_costs(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) pm_labor_cost_scaling(t,i) Multiplicative factor describing increase in hourly labor costs to match minimum wage (1) p36_total_hours_worked(iso) Total hours worked by all employed people (mio. hours per year) p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index 4a846fb148..a26b81a515 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -19,5 +19,5 @@ * and fish (as we cannot calibrate labor costs for fish to employment data) q36_employment(i2) .. v36_employment(i2) =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * - (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*p36_hourly_costs(ct,i2))); + (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*pm_hourly_costs(ct,i2))); diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index 0bbd63f934..4d93be7698 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -7,8 +7,8 @@ scalars s36_weeks_in_year number of weeks in a year / 52.1429 / -s36_minimum_wage global minimum wage / 3 / -s36_scale_labor_costs whether total labor costs should be scaled according to wage increase / 0 / +s36_minimum_wage global minimum wage / 0 / +s36_scale_labor_costs whether total labor costs should be scaled according to wage increase / 1 / ; table f36_weekly_hours(t_all,i) Historical values of average weekly hours worked per person in agriculture (h per week) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index ae691e0630..74d045058f 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -44,8 +44,8 @@ p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2050) and (m_year(t) le 2100)) = max( * Hourly labor costs are then aggregated to regional level using the total hours worked in the last * year of `t_past` as weight. -p36_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseline(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); -p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +pm_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseline(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +pm_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); *' @code *' If productivity is assumed to increase proportional to hourly labor costs also with external minimum wage, @@ -55,7 +55,7 @@ p36_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_tot if (s36_scale_labor_costs eq 0, pm_labor_cost_scaling(t,i) = 1; elseif (s36_scale_labor_costs eq 1), - pm_labor_cost_scaling(t,i) = p36_hourly_costs(t,i) / p36_hourly_costs_baseline(t,i); + pm_labor_cost_scaling(t,i) = pm_hourly_costs(t,i) / pm_hourly_costs_baseline(t,i); ); *' @stop diff --git a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt index a76ea293ff..7a58fa28f0 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt +++ b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt @@ -9,3 +9,5 @@ name,type,reason pm_interest,input,questionnaire vm_prod,input,questionnaire pm_prod_init,par,questionnaire +pm_hourly_costs_baseline,par,questionnaire +pm_hourly_costs,par,questionnaire diff --git a/modules/38_factor_costs/per_ton_fao_may22/postsolve.gms b/modules/38_factor_costs/per_ton_fao_may22/postsolve.gms index a6d7ffd27d..fee35f5175 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/postsolve.gms +++ b/modules/38_factor_costs/per_ton_fao_may22/postsolve.gms @@ -8,12 +8,16 @@ *#################### R SECTION START (OUTPUT DEFINITIONS) ##################### - ov_cost_prod_crop(t,i,req,"marginal") = vm_cost_prod_crop.m(i,req); - oq38_cost_prod_crop(t,i,req,"marginal") = q38_cost_prod_crop.m(i,req); - ov_cost_prod_crop(t,i,req,"level") = vm_cost_prod_crop.l(i,req); - oq38_cost_prod_crop(t,i,req,"level") = q38_cost_prod_crop.l(i,req); - ov_cost_prod_crop(t,i,req,"upper") = vm_cost_prod_crop.up(i,req); - oq38_cost_prod_crop(t,i,req,"upper") = q38_cost_prod_crop.up(i,req); - ov_cost_prod_crop(t,i,req,"lower") = vm_cost_prod_crop.lo(i,req); - oq38_cost_prod_crop(t,i,req,"lower") = q38_cost_prod_crop.lo(i,req); + ov_cost_prod_crop(t,i,req,"marginal") = vm_cost_prod_crop.m(i,req); + oq38_cost_prod_crop_labor(t,i,"marginal") = q38_cost_prod_crop_labor.m(i); + oq38_cost_prod_crop_capital(t,i,"marginal") = q38_cost_prod_crop_capital.m(i); + ov_cost_prod_crop(t,i,req,"level") = vm_cost_prod_crop.l(i,req); + oq38_cost_prod_crop_labor(t,i,"level") = q38_cost_prod_crop_labor.l(i); + oq38_cost_prod_crop_capital(t,i,"level") = q38_cost_prod_crop_capital.l(i); + ov_cost_prod_crop(t,i,req,"upper") = vm_cost_prod_crop.up(i,req); + oq38_cost_prod_crop_labor(t,i,"upper") = q38_cost_prod_crop_labor.up(i); + oq38_cost_prod_crop_capital(t,i,"upper") = q38_cost_prod_crop_capital.up(i); + ov_cost_prod_crop(t,i,req,"lower") = vm_cost_prod_crop.lo(i,req); + oq38_cost_prod_crop_labor(t,i,"lower") = q38_cost_prod_crop_labor.lo(i); + oq38_cost_prod_crop_capital(t,i,"lower") = q38_cost_prod_crop_capital.lo(i); *##################### R SECTION END (OUTPUT DEFINITIONS) ###################### diff --git a/modules/38_factor_costs/sticky_feb18/declarations.gms b/modules/38_factor_costs/sticky_feb18/declarations.gms index 5dc43d5085..a23b55c41c 100644 --- a/modules/38_factor_costs/sticky_feb18/declarations.gms +++ b/modules/38_factor_costs/sticky_feb18/declarations.gms @@ -19,7 +19,7 @@ positive variables ; parameters - p38_variable_costs(t,i,kcr) Variable input costs per unit of output (USD05MER per ton DM) + p38_labor_need(t,i,kcr) Labor input costs per unit of output (USD05MER per ton DM) p38_capital_need(t,i,kcr,mobil38) Capital requirements per unit of output (USD05MER per ton DM) p38_capital_immobile(t,j,kcr) Preexisting immobile capital stocks before investment (mio USD05MER) p38_capital_mobile(t,j) Preexisting mobile capital stocks before investment (mio USD05MER) diff --git a/modules/38_factor_costs/sticky_feb18/equations.gms b/modules/38_factor_costs/sticky_feb18/equations.gms index 89429d5902..7361f037d4 100644 --- a/modules/38_factor_costs/sticky_feb18/equations.gms +++ b/modules/38_factor_costs/sticky_feb18/equations.gms @@ -12,7 +12,7 @@ *' the total labor costs are scaled by the corresponding factor from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_variable_costs(ct,i2,kcr) * pm_labor_cost_scaling(ct,i2))) + =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_labor_need(ct,i2,kcr) * pm_labor_cost_scaling(ct,i2))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/38_factor_costs/sticky_feb18/not_used.txt b/modules/38_factor_costs/sticky_feb18/not_used.txt index a40b473c2f..3fc4b7f058 100644 --- a/modules/38_factor_costs/sticky_feb18/not_used.txt +++ b/modules/38_factor_costs/sticky_feb18/not_used.txt @@ -5,3 +5,5 @@ # | MAgPIE License Exception, version 1.0 (see LICENSE file). # | Contact: magpie@pik-potsdam.de name,type,reason +pm_hourly_costs_baseline,par,questionnaire +pm_hourly_costs,par,questionnaire diff --git a/modules/38_factor_costs/sticky_feb18/presolve.gms b/modules/38_factor_costs/sticky_feb18/presolve.gms index 90d7b44452..8723fc593d 100644 --- a/modules/38_factor_costs/sticky_feb18/presolve.gms +++ b/modules/38_factor_costs/sticky_feb18/presolve.gms @@ -6,7 +6,7 @@ *** | Contact: magpie@pik-potsdam.de if (smax(j, pm_labor_prod(t,j)) <> 1 OR smin(j, pm_labor_prod(t,j)) <> 1, - abort "This factor cost realization cannot handle labor productivities != 1" + abort "This factor cost realization cannot handle labor productivities != 1" ); p38_share_calibration(i) = f38_historical_share("y2010",i)-(f38_reg_parameters("slope")*log10(sum(i_to_iso(i,iso),im_gdp_pc_ppp_iso("y2010",iso)))+f38_reg_parameters("intercept")); @@ -32,7 +32,7 @@ else i38_fac_req(t,i,kcr) = i38_fac_req(t,i,kcr); ); -p38_variable_costs(t,i,kcr) = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"labor"); +p38_labor_need(t,i,kcr) = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"labor"); p38_capital_need(t,i,kcr,"mobile") = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"capital") / (pm_interest(t,i)+s38_depreciation_rate) * (1-s38_immobile); p38_capital_need(t,i,kcr,"immobile") = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"capital") / (pm_interest(t,i)+s38_depreciation_rate) * s38_immobile; diff --git a/modules/38_factor_costs/sticky_labor/declarations.gms b/modules/38_factor_costs/sticky_labor/declarations.gms index 41590b703f..16197e39cf 100644 --- a/modules/38_factor_costs/sticky_labor/declarations.gms +++ b/modules/38_factor_costs/sticky_labor/declarations.gms @@ -17,12 +17,12 @@ positive variables vm_cost_prod_crop(i,req) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) v38_investment_immobile(j,kcr) Investment costs in immobile farm capital (mio USD05MER per yr) v38_investment_mobile(j) Investment costs in mobile farm capital (mio USD05MER per yr) - v38_labor_need(j,kcr) Labor required per unit of output (hours per ton DM) + v38_laborhours_need(j,kcr) Labor required per unit of output (hours per ton DM) v38_capital_need(j,kcr,mobil38) Captial required per unit of output (USD05MER per ton DM) ; parameters - p38_variable_costs(t,i,kcr) Variable input costs per unit of output (USD05MER per ton DM) + p38_labor_need(t,i,kcr) Labor input costs per unit of output (USD05MER per ton DM) p38_capital_need(t,i,kcr,mobil38) Capital requirements per unit of output (USD05MER per ton DM) p38_capital_immobile(t,j,kcr) Preexisting immobile capital stocks before investment (mio USD05MER) p38_capital_mobile(t,j) Preexisting mobile capital stocks before investment (mio USD05MER) @@ -49,7 +49,7 @@ parameters ov_cost_prod_crop(t,i,req,type) Regional factor costs of capital and labor for crop production (mio USD05MER per yr) ov38_investment_immobile(t,j,kcr,type) Investment costs in immobile farm capital (mio USD05MER per yr) ov38_investment_mobile(t,j,type) Investment costs in mobile farm capital (mio USD05MER per yr) - ov38_labor_need(t,j,kcr,type) Labor required per unit of output (hours per ton DM) + ov38_laborhours_need(t,j,kcr,type) Labor required per unit of output (hours per ton DM) ov38_capital_need(t,j,kcr,mobil38,type) Captial required per unit of output (USD05MER per ton DM) oq38_cost_prod_labor(t,i,type) Regional labor input costs for crop production (mio USD05MER) oq38_cost_prod_capital(t,i,type) Regional capital input costs for crop production (mio USD05MER) diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 3a92c38958..124712097c 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -9,7 +9,7 @@ *' @equations *' Constant elasticity of substitution (CES) production function for one unit of output. -*' The CES function accounts for capital `v38_capital_need` and labor `v38_labor_need` requirements. +*' The CES function accounts for capital `v38_capital_need` and labor `v38_laborhours_need` requirements. *' The efficiency of labor is affected by the labor productivity factor `vm_labor_prod`, which is *' provided by the labor productivity module [37_labor_prod]. *' The calculation of total capital and labor costs is covered by the equations `q38_cost_prod_crop` and `q38_cost_prod_inv`. @@ -18,7 +18,7 @@ q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_labor_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. @@ -26,7 +26,7 @@ *' the total labor costs are scaled by the corresponding factor from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_labor_need(j2,kcr) * s38_wage * sum(ct, pm_labor_cost_scaling(ct,i2)))) + =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_laborhours_need(j2,kcr) * sum(ct, pm_hourly_costs(ct,i2)))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/38_factor_costs/sticky_labor/input.gms b/modules/38_factor_costs/sticky_labor/input.gms index e217090bf6..9304b9c41a 100644 --- a/modules/38_factor_costs/sticky_labor/input.gms +++ b/modules/38_factor_costs/sticky_labor/input.gms @@ -13,11 +13,8 @@ scalars s38_depreciation_rate depreciation rate (share of costs) / 0.05 / *' Share of immobile capital. s38_immobile immobile capital (share) / 1 / -* Note: Wage for labor is needed for the CES function. -* The actual value does not matter because it cancels out. -s38_wage Wage for labor in CES function (USD05MER per hour) / 1 / s38_ces_elast_subst Elasticity of substitution in CES function (1) / 0.3 / -s38_fix_capital_need Year until which capital requirements are fixed / 2100 / +s38_fix_capital_need Year until which capital requirements are fixed / 2020 / ; parameter f38_fac_req(kcr) Factor requirement costs in 2005 (USD05MER per tDM) diff --git a/modules/38_factor_costs/sticky_labor/not_used.txt b/modules/38_factor_costs/sticky_labor/not_used.txt index e10fdd9ad7..7dc39e71a6 100644 --- a/modules/38_factor_costs/sticky_labor/not_used.txt +++ b/modules/38_factor_costs/sticky_labor/not_used.txt @@ -6,3 +6,4 @@ # | Contact: magpie@pik-potsdam.de name,type,reason vm_prod_reg,input,not used +pm_labor_cost_scaling,parameter,questionnaire diff --git a/modules/38_factor_costs/sticky_labor/postsolve.gms b/modules/38_factor_costs/sticky_labor/postsolve.gms index f337c2d2af..b421b25da7 100644 --- a/modules/38_factor_costs/sticky_labor/postsolve.gms +++ b/modules/38_factor_costs/sticky_labor/postsolve.gms @@ -14,7 +14,7 @@ p38_capital_mobile(t+1,j) = p38_capital_mobile(t,j) + v38_investment_mobile.l(j) ov_cost_prod_crop(t,i,req,"marginal") = vm_cost_prod_crop.m(i,req); ov38_investment_immobile(t,j,kcr,"marginal") = v38_investment_immobile.m(j,kcr); ov38_investment_mobile(t,j,"marginal") = v38_investment_mobile.m(j); - ov38_labor_need(t,j,kcr,"marginal") = v38_labor_need.m(j,kcr); + ov38_laborhours_need(t,j,kcr,"marginal") = v38_laborhours_need.m(j,kcr); ov38_capital_need(t,j,kcr,mobil38,"marginal") = v38_capital_need.m(j,kcr,mobil38); oq38_cost_prod_labor(t,i,"marginal") = q38_cost_prod_labor.m(i); oq38_cost_prod_capital(t,i,"marginal") = q38_cost_prod_capital.m(i); @@ -24,7 +24,7 @@ p38_capital_mobile(t+1,j) = p38_capital_mobile(t,j) + v38_investment_mobile.l(j) ov_cost_prod_crop(t,i,req,"level") = vm_cost_prod_crop.l(i,req); ov38_investment_immobile(t,j,kcr,"level") = v38_investment_immobile.l(j,kcr); ov38_investment_mobile(t,j,"level") = v38_investment_mobile.l(j); - ov38_labor_need(t,j,kcr,"level") = v38_labor_need.l(j,kcr); + ov38_laborhours_need(t,j,kcr,"level") = v38_laborhours_need.l(j,kcr); ov38_capital_need(t,j,kcr,mobil38,"level") = v38_capital_need.l(j,kcr,mobil38); oq38_cost_prod_labor(t,i,"level") = q38_cost_prod_labor.l(i); oq38_cost_prod_capital(t,i,"level") = q38_cost_prod_capital.l(i); @@ -34,7 +34,7 @@ p38_capital_mobile(t+1,j) = p38_capital_mobile(t,j) + v38_investment_mobile.l(j) ov_cost_prod_crop(t,i,req,"upper") = vm_cost_prod_crop.up(i,req); ov38_investment_immobile(t,j,kcr,"upper") = v38_investment_immobile.up(j,kcr); ov38_investment_mobile(t,j,"upper") = v38_investment_mobile.up(j); - ov38_labor_need(t,j,kcr,"upper") = v38_labor_need.up(j,kcr); + ov38_laborhours_need(t,j,kcr,"upper") = v38_laborhours_need.up(j,kcr); ov38_capital_need(t,j,kcr,mobil38,"upper") = v38_capital_need.up(j,kcr,mobil38); oq38_cost_prod_labor(t,i,"upper") = q38_cost_prod_labor.up(i); oq38_cost_prod_capital(t,i,"upper") = q38_cost_prod_capital.up(i); @@ -44,7 +44,7 @@ p38_capital_mobile(t+1,j) = p38_capital_mobile(t,j) + v38_investment_mobile.l(j) ov_cost_prod_crop(t,i,req,"lower") = vm_cost_prod_crop.lo(i,req); ov38_investment_immobile(t,j,kcr,"lower") = v38_investment_immobile.lo(j,kcr); ov38_investment_mobile(t,j,"lower") = v38_investment_mobile.lo(j); - ov38_labor_need(t,j,kcr,"lower") = v38_labor_need.lo(j,kcr); + ov38_laborhours_need(t,j,kcr,"lower") = v38_laborhours_need.lo(j,kcr); ov38_capital_need(t,j,kcr,mobil38,"lower") = v38_capital_need.lo(j,kcr,mobil38); oq38_cost_prod_labor(t,i,"lower") = q38_cost_prod_labor.lo(i); oq38_cost_prod_capital(t,i,"lower") = q38_cost_prod_capital.lo(i); diff --git a/modules/38_factor_costs/sticky_labor/presolve.gms b/modules/38_factor_costs/sticky_labor/presolve.gms index e3e5450702..7eebda5aef 100644 --- a/modules/38_factor_costs/sticky_labor/presolve.gms +++ b/modules/38_factor_costs/sticky_labor/presolve.gms @@ -28,16 +28,16 @@ else i38_fac_req(t,i,kcr) = i38_fac_req(t,i,kcr); ); -p38_variable_costs(t,i,kcr) = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"labor"); +p38_labor_need(t,i,kcr) = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"labor"); p38_capital_need(t,i,kcr,"mobile") = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"capital") / (pm_interest(t,i)+s38_depreciation_rate) * (1-s38_immobile); p38_capital_need(t,i,kcr,"immobile") = i38_fac_req(t,i,kcr) * p38_cost_share(t,i,"capital") / (pm_interest(t,i)+s38_depreciation_rate) * s38_immobile; *** Variable labor costs BEGIN -* set bounds for labor requirements -v38_labor_need.lo(j,kcr) = 0.1*sum(cell(i,j),p38_variable_costs(t,i,kcr)); -v38_labor_need.l(j,kcr) = sum(cell(i,j),p38_variable_costs(t,i,kcr)); -v38_labor_need.up(j,kcr) = 10 * sum(cell(i,j),p38_variable_costs(t,i,kcr)); +* set bounds for labor requirements (in terms of hours worked per output unit) +v38_laborhours_need.lo(j,kcr) = 0.1 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i))); +v38_laborhours_need.l(j,kcr) = sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i)); +v38_laborhours_need.up(j,kcr) = 10 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i))); * set bounds for captial requirements if (m_year(t) <= s38_fix_capital_need, @@ -49,8 +49,8 @@ else ); * update CES parameters -i38_ces_shr(j,kcr) = sum(cell(i,j), (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + s38_wage * v38_labor_need.l(j,kcr)**(1 + s38_ces_elast_par))); -i38_ces_scale(j,kcr) = sum(cell(i,j), 1/([i38_ces_shr(j,kcr) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(-s38_ces_elast_par) + (1 - i38_ces_shr(j,kcr)) * v38_labor_need.l(j,kcr)**(-s38_ces_elast_par)]**(-1/s38_ces_elast_par))); +i38_ces_shr(j,kcr) = sum(cell(i,j), (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + pm_hourly_costs_baseline(t,i) * v38_laborhours_need.l(j,kcr)**(1 + s38_ces_elast_par))); +i38_ces_scale(j,kcr) = sum(cell(i,j), 1/([i38_ces_shr(j,kcr) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(-s38_ces_elast_par) + (1 - i38_ces_shr(j,kcr)) * v38_laborhours_need.l(j,kcr)**(-s38_ces_elast_par)]**(-1/s38_ces_elast_par))); *** Variable labor costs END From 77652b7a04b10c8757070b73e160c710f3786186 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 28 Sep 2022 09:00:06 +0200 Subject: [PATCH 16/22] updated documentation --- modules/38_factor_costs/sticky_feb18/input.gms | 4 ++-- modules/38_factor_costs/sticky_labor/equations.gms | 5 ++--- modules/38_factor_costs/sticky_labor/input.gms | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/38_factor_costs/sticky_feb18/input.gms b/modules/38_factor_costs/sticky_feb18/input.gms index 94e1654ae8..78107e5300 100644 --- a/modules/38_factor_costs/sticky_feb18/input.gms +++ b/modules/38_factor_costs/sticky_feb18/input.gms @@ -9,9 +9,9 @@ $setglobal c38_fac_req glo * options: glo, reg scalars -*' Depreciation rate assuming roughly 20 years linear depreciation for invesment goods +* Depreciation rate assuming roughly 20 years linear depreciation for invesment goods s38_depreciation_rate depreciation rate (share of costs) / 0.05 / -*' Share of immobile capital. +* Share of immobile capital. s38_immobile immobile capital (share) / 1 / ; diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 124712097c..1ecbcf7b1b 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -21,9 +21,8 @@ (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; -*' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. -*' To account for increased hourly labor costs in case of an external minimum wage, -*' the total labor costs are scaled by the corresponding factor from [36_employment]. +*' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirements +*' (in hours) per output unit and wages from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_laborhours_need(j2,kcr) * sum(ct, pm_hourly_costs(ct,i2)))) diff --git a/modules/38_factor_costs/sticky_labor/input.gms b/modules/38_factor_costs/sticky_labor/input.gms index 9304b9c41a..249283f0d0 100644 --- a/modules/38_factor_costs/sticky_labor/input.gms +++ b/modules/38_factor_costs/sticky_labor/input.gms @@ -9,9 +9,9 @@ $setglobal c38_fac_req glo * options: glo, reg scalars -*' Depreciation rate assuming roughly 20 years linear depreciation for invesment goods +* Depreciation rate assuming roughly 20 years linear depreciation for invesment goods s38_depreciation_rate depreciation rate (share of costs) / 0.05 / -*' Share of immobile capital. +* Share of immobile capital. s38_immobile immobile capital (share) / 1 / s38_ces_elast_subst Elasticity of substitution in CES function (1) / 0.3 / s38_fix_capital_need Year until which capital requirements are fixed / 2020 / From 9809ff600c0076f76d8828960039a434ffa3821a Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 28 Sep 2022 11:37:38 +0200 Subject: [PATCH 17/22] fixed noScaling wage scenario for sticky_labor --- modules/38_factor_costs/sticky_labor/declarations.gms | 1 + modules/38_factor_costs/sticky_labor/equations.gms | 2 +- modules/38_factor_costs/sticky_labor/not_used.txt | 1 - modules/38_factor_costs/sticky_labor/preloop.gms | 5 +++++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/38_factor_costs/sticky_labor/declarations.gms b/modules/38_factor_costs/sticky_labor/declarations.gms index 16197e39cf..48cd356aa3 100644 --- a/modules/38_factor_costs/sticky_labor/declarations.gms +++ b/modules/38_factor_costs/sticky_labor/declarations.gms @@ -36,6 +36,7 @@ parameters i38_ces_scale(j,kcr) Scaling factor for total factor productivity (1) p38_intr_depr(t,i) Factor from interest and depreciation rate (1) + p38_labor_prod_wage(t,i) Change in labor productivity due to higher wages (1) i38_fac_req(t_all,i,kcr) Factor requirements (USD05MER per tDM) ; diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 1ecbcf7b1b..c000dadd24 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -18,7 +18,7 @@ q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2)) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2) * sum(cell(i2,j2), p38_labor_prod_wage(ct,i2))) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirements diff --git a/modules/38_factor_costs/sticky_labor/not_used.txt b/modules/38_factor_costs/sticky_labor/not_used.txt index 7dc39e71a6..e10fdd9ad7 100644 --- a/modules/38_factor_costs/sticky_labor/not_used.txt +++ b/modules/38_factor_costs/sticky_labor/not_used.txt @@ -6,4 +6,3 @@ # | Contact: magpie@pik-potsdam.de name,type,reason vm_prod_reg,input,not used -pm_labor_cost_scaling,parameter,questionnaire diff --git a/modules/38_factor_costs/sticky_labor/preloop.gms b/modules/38_factor_costs/sticky_labor/preloop.gms index 8068b9b489..300155beaa 100644 --- a/modules/38_factor_costs/sticky_labor/preloop.gms +++ b/modules/38_factor_costs/sticky_labor/preloop.gms @@ -9,3 +9,8 @@ s38_ces_elast_par = (1/s38_ces_elast_subst) - 1 ; p38_intr_depr(t,i) = (1-s38_depreciation_rate) * pm_interest(t,i)/(1+pm_interest(t,i)) + s38_depreciation_rate; + + +* labor productivity change due to higher wages (if higher wages don't lead to higher total labor costs) +p38_labor_prod_wage(t,i)$(pm_labor_cost_scaling(t,i) = 1) = pm_hourly_costs(t,i) / pm_hourly_costs_baseline(t,i); +p38_labor_prod_wage(t,i)$(pm_labor_cost_scaling(t,i) <> 1) = 1; \ No newline at end of file From dbec0d5c4964ecb4cc47e2e1fb7865a795d01995 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 28 Sep 2022 12:30:12 +0200 Subject: [PATCH 18/22] updated documentation --- modules/38_factor_costs/sticky_labor/equations.gms | 5 +++-- modules/38_factor_costs/sticky_labor/realization.gms | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index c000dadd24..481874927a 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -10,8 +10,9 @@ *' Constant elasticity of substitution (CES) production function for one unit of output. *' The CES function accounts for capital `v38_capital_need` and labor `v38_laborhours_need` requirements. -*' The efficiency of labor is affected by the labor productivity factor `vm_labor_prod`, which is -*' provided by the labor productivity module [37_labor_prod]. +*' The efficiency of labor is affected by the labor productivity factor `pm_labor_prod` based on climate +*' change impacts, which is provided by the labor productivity module [37_labor_prod], and by the factor +*' `p38_labor_prod_wage` based on increased wages from [36_employment]. *' The calculation of total capital and labor costs is covered by the equations `q38_cost_prod_crop` and `q38_cost_prod_inv`. *' The conceptual and analytical details of the CES function including the labor productivity factor are documented in @orlov_ces_2021. diff --git a/modules/38_factor_costs/sticky_labor/realization.gms b/modules/38_factor_costs/sticky_labor/realization.gms index 391e93bd58..a87d8c5a73 100644 --- a/modules/38_factor_costs/sticky_labor/realization.gms +++ b/modules/38_factor_costs/sticky_labor/realization.gms @@ -6,8 +6,9 @@ *** | Contact: magpie@pik-potsdam.de *' @description This realization is based on sticky_feb18, but in addition includes a -*' CES production function, which -*' accounts for climate change impacts on labor productivity provided by [37_labor_prod]. +*' CES production function, which accounts for climate change impacts on labor productivity +*' provided by [37_labor_prod], and wage increase impact on labor productivity based on +*' wages in [36_employment]. *' The main goal of this realization is to improve crop patterns at different spatial *' scales. Specifically, the goal is reached by reducing capital relocation flexibility between *' crop types. In the "sticky" realization, the factor costs are separated into variable labor cost and From fab45cf55dc7054ec6ac91f58452938af57b369c Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Wed, 28 Sep 2022 16:15:36 +0200 Subject: [PATCH 19/22] updated switch and explanation --- config/default.cfg | 22 ++++++++------------- modules/36_employment/exo_may22/input.gms | 2 +- modules/36_employment/exo_may22/preloop.gms | 6 +++--- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/config/default.cfg b/config/default.cfg index 2692302f4d..130f6e3b2c 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -859,14 +859,16 @@ cfg$gms$s35_hvarea <- 0 # def = 0 # * optimization cfg$gms$employment <- "exo_may22" # default = "exo_may22" -# global minimum wage that needs to reached in all countries by 2050 +# * global minimum wage that needs to reached in all countries by 2050 cfg$gms$s36_minimum_wage <- 0 # default = 0 (no minimum wage) -# If minimum wage leads to higher hourly labor costs, should total labor costs be scaled accordingly (1), or not (0)? -# If labor costs are scaled and sticky_labor is used for 38_factor_costs, a shift from labor to capital use will take -# place. The assumption of not scaling total labor costs would be, that productivity increases proportional to hourly -# labor costs, leading to less people employed -cfg$gms$s36_scale_labor_costs <- 1 # default = 1 +# * A scenario with higher wages (compared to the baseline wages) can either lead to +# * higher total labor costs (if productivity stays the same), or go together with +# * higher labor productivity (e.g. if both are assumed to rise due to better education). +# * s36_scale_productivity_with_wage is a boolean switch to decide whether the labor +# * productivity should change proportional to the wage difference between baseline +# * and wage scenario (1) or not (0). +cfg$gms$s36_scale_productivity_with_wage <- 0 # default = 0 # ***--------------------- 37_labor_prod --------------------------------- # * This module provides a labour productivity factor (0-1), @@ -896,14 +898,6 @@ cfg$gms$c37_labor_uncertainty <- "ensmean" # default = "ensmean" # * (sticky_labor) based on sticky_feb18 + labor productivity factor included cfg$gms$factor_costs <- "per_ton_fao_may22" # default = per_ton_fao_may22 -# * Scalar to change factor costs by a certain factor for irrigation - -cfg$gms$s38_factor <- 1 #default = 1 - -# * Year when policy shock (additional costs for irrigated crops ) will be implemented -# * (only applicable for mixed_reg_feb17 realization) -cfg$gms$s38_shock_year <- 1995 #default = 1995 - # * Regional (reg) or global (glo) factor requirements (applicable for per_ton_fao_may22, # * sticky_feb18, sticky_labor). The regional version keeps factor requirements constant # * after 2010, the global version uses values from 2005 for all years. Typically, the diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index 4d93be7698..c3dc89da1f 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -8,7 +8,7 @@ scalars s36_weeks_in_year number of weeks in a year / 52.1429 / s36_minimum_wage global minimum wage / 0 / -s36_scale_labor_costs whether total labor costs should be scaled according to wage increase / 1 / +s36_scale_productivity_with_wage whether labor productivity should be scaled according to wage increase / 1 / ; table f36_weekly_hours(t_all,i) Historical values of average weekly hours worked per person in agriculture (h per week) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index 74d045058f..fb8e09e794 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -48,13 +48,13 @@ pm_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseli pm_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); *' @code -*' If productivity is assumed to increase proportional to hourly labor costs also with external minimum wage, +*' If productivity is assumed to increase proportional to hourly labor costs also with external wage scenario, *' total labor costs should not be scaled. Otherwise, the scaling factor between baseline and increased hourly labor costs will *' be applied to labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the *' non-MAgPIE labor costs. -if (s36_scale_labor_costs eq 0, +if (s36_scale_productivity_with_wage eq 1, pm_labor_cost_scaling(t,i) = 1; -elseif (s36_scale_labor_costs eq 1), +elseif (s36_scale_productivity_with_wage eq 0), pm_labor_cost_scaling(t,i) = pm_hourly_costs(t,i) / pm_hourly_costs_baseline(t,i); ); *' @stop From 51b0ad9117e7331787bca3adcbe10c4a3e31a750 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Fri, 30 Sep 2022 12:19:08 +0200 Subject: [PATCH 20/22] addressed comments --- config/default.cfg | 280 +++++++++--------- .../36_employment/exo_may22/declarations.gms | 2 +- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/input.gms | 2 +- 4 files changed, 143 insertions(+), 143 deletions(-) diff --git a/config/default.cfg b/config/default.cfg index cf5d4ba973..70f39ad093 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -107,7 +107,7 @@ cfg$crop_calib_min_landconversion_cost <- 0.2 # def= 0.2 # Selection type of calibration factors. # If FALSE, calibration factors from the last iteration are used. # If TRUE, calibration factors from the iteration with the lowest standard deviation are used. -cfg$best_calib_landconversion_cost <- TRUE # def = TRUE +cfg$best_calib_landconversion_cost <- TRUE # def = TRUE # Settings for NPI/NDC recalculation # * (TRUE): NPI/NDC recalculation will be performed @@ -170,9 +170,9 @@ all_iso_countries <- "ABW,AFG,AGO,AIA,ALA,ALB,AND,ARE,ARG,ARM, # * Based on https://tntcat.iiasa.ac.at/SspDb/dsd?Action=htmlpage&page=10#regiondefs oecd90andEU <- "ALB,AUS,AUT,BEL,BIH,BGR,CAN,CYP,CZE,DNK,EST,FIN,FRA, - DEU,GRC,HUN,HRV,ISL,IRL,ITA,JPN,LUX,LVA,LTU,MLT,MNE, - NLD,NOR,NZL,POL,PRT,ROU,SRB,SVK,SVN,ESP,SWE,CHE,MKD,TUR, - GBR,USA" + DEU,GRC,HUN,HRV,ISL,IRL,ITA,JPN,LUX,LVA,LTU,MLT,MNE, + NLD,NOR,NZL,POL,PRT,ROU,SRB,SVK,SVN,ESP,SWE,CHE,MKD,TUR, + GBR,USA" # ***--------------------- 09_drivers ---------------------------------------- # * (aug17): default drivers @@ -180,7 +180,7 @@ cfg$gms$drivers <- "aug17" # def = aug17 cfg$gms$c09_pop_scenario <- "SSP2" # def = SSP2 cfg$gms$c09_gdp_scenario <- "SSP2" # def = SSP2 # * options: SSP: "SSP1", "SSP2", "SSP3", "SSP4", "SSP5", "SSP2EU" -# * SDP: "SDP", "SDP_EI", "SDP_MC", "SDP_RC" +# * SDP: "SDP", "SDP_EI", "SDP_MC", "SDP_RC" # * SRES: "A1", "A2", "B1", "B2" # * Note: SSP2EU a European Commission population/income scenario for # * Ariadne project. SDP is same as SSP1 income, while SDP_EI, SDP_RC, SDP_MC @@ -265,19 +265,19 @@ cfg$gms$s12_hist_interest_hic_noselect <- "0.04" # def = 0.04 # * (endo_jan22): endogenous technological change with full cost accounting and # * stepwise updated crop and managed pastures area information # * (exo): exogenous technological change (removes non-linearities from the model); -# * requires an existing model run with endo tc for generating the input file -# * f13_tau_scenario.csv +# * requires an existing model run with endo tc for generating the input file +# * f13_tau_scenario.csv cfg$gms$tc <- "endo_jan22" # def = endo_jan22 # * tc cost scenario crops: low, medium or high -cfg$gms$c13_tccost <- "medium" # def = medium +cfg$gms$c13_tccost <- "medium" # def = medium # * ignore historical tau (1) or use it as lower bound (0) -cfg$gms$s13_ignore_tau_historical <- 1 # def = 1 +cfg$gms$s13_ignore_tau_historical <- 1 # def = 1 # * Maximum regional tech cost expressed as share of reginal GDP -# * A meaningful value would be 0.002. However, this bound causes infeasibilities in some cases. -# * Therefore, this bound is not used in the current model version. +# * A meaningful value would be 0.002. However, this bound causes infeasibilities in some cases. +# * Therefore, this bound is not used in the current model version. cfg$gms$s13_max_gdp_shr <- Inf # def = Inf @@ -353,9 +353,9 @@ cfg$gms$s15_milk_share_fadeout_india <- 1 # def = 1 # * and transition periods (applied after food demand model is executed) # * options consist of 3 parts: functional form (lin,sigmoid), target (zero, 20pc, 50pc, 80pc, 90pc) and transition period (10_50: from 2010 to 2050, 20_50: from 2020 to 2050) # * Example for sigmoid_50pc_20_50: -# * Functional form: sigmoid (S-shaped) -# * Target: 50percent reduction at end of transition period (2050 in this case) -# * Transition period: start in 2020, end in 2050 +# * Functional form: sigmoid (S-shaped) +# * Target: 50percent reduction at end of transition period (2050 in this case) +# * Transition period: start in 2020, end in 2050 # * options: constant, # * lin_zero_10_50, lin_zero_20_50, lin_zero_20_30, lin_zero_20_70, lin_50pc_20_50, lin_50pc_20_50_extend65, lin_50pc_20_50_extend80, # * lin_50pc_10_50_extend90, lin_75pc_10_50_extend90, lin_80pc_20_50, lin_80pc_20_50_extend95, lin_90pc_20_50_extend95, @@ -369,7 +369,7 @@ cfg$gms$c15_rumdairyscen <- "constant" # def = constant # * Set items of kfo_rd. This option allows for sensitivity scenarios. # * kfo_rd is used in the food substitution scenarios c15_rumdairy_scp_scen and c15_rumdairyscen (see above) -# * options: "livst_rum,livst_milk", "livst_rum" or "livst_milk" +# * options: "livst_rum,livst_milk", "livst_rum" or "livst_milk" cfg$gms$kfo_rd <- "livst_rum" #def = livst_rum # * Reduction of livestock products towards a kcal/cap/day intake target with or w/o substitution @@ -380,7 +380,7 @@ cfg$gms$s15_kcal_pc_livestock_intake_target <- "430" # def = 430 cfg$gms$c15_livescen_target <- "constant" # def = constant # * fade-out of livestock products (0) or substitution of livestock products with plant-based products (1) # * options: 0 (=fade-out), 1 (=substitution) -cfg$gms$s15_livescen_target_subst <- 1 # def = 1 +cfg$gms$s15_livescen_target_subst <- 1 # def = 1 # ***** Start configuration of exogenous food intake and waste scenarios ***** @@ -512,7 +512,7 @@ cfg$gms$processing <- "substitution_may21" # def = substitution_may21 # * SCP route # * single-cell microbial protein production route -# * options: mixed, methane, sugar, cellulose, hydrogen +# * options: mixed, methane, sugar, cellulose, hydrogen # * Mapping of scp route to feedstock: methane:foddr, sugar:sugar_cane, cellulose:begr # * Note that hydrogen does not require land-based inputs # * Mixed assumes equal shares of methane, sugar, cellulose and hydrogen @@ -566,7 +566,7 @@ cfg$gms$land_conservation <- "area_based_apr22" # def = area_based_ap # * ("Forest_Other") PrimForest + PrimForest+ other land conservation + WDPA # * Note: c22_protect_scenario applies to countries selected in policy_countries22 # * c22_protect_scenario_noselect applies to all other countries. -cfg$gms$c22_protect_scenario <- "none" # def = None +cfg$gms$c22_protect_scenario <- "none" # def = None cfg$gms$c22_protect_scenario_noselect <- "none" # def = None # * Switch and specification of countries for which land conservation policies in # * c22_protect_scenario apply. @@ -609,7 +609,7 @@ cfg$gms$c30_rotation_constraints <- "on" # def = "on" # * good_20div (good practice - 20% for other crops), setaside (default plus fallow), # * legumes (minimum share of legumes), agroforestry (minimum share of perennials), sixfoldrotation # * (crops can only repeat after 6 years), agroecology (mix of previous scenarios) -# * In realization penalty_apr22: none (no incentives), default (best guess), fallow (increased fallow incentives), +# * In realization penalty_apr22: none (no incentives), default (best guess), fallow (increased fallow incentives), # * legumes (increased incentives for legumes), agroforestry (increased incentives for perennials), agroecology (mix) # * In realization endo_apr21: no scenarios exist. cfg$gms$c30_rotation_scenario <- "default" # def = "default" @@ -676,7 +676,7 @@ cfg$gms$c31_past_suit_scen <- "ssp370" # def = "ssp370" cfg$gms$s31_limit_calib <- 1 # def = 1 # ***--------------------- 32_forestry ----------------------------------- -# * (dynamic_feb21): Dynamic forestry sector including afforestation with detailed age-classes +# * (dynamic_feb21): Dynamic forestry sector including afforestation with detailed age-classes cfg$gms$forestry <- "dynamic_feb21" # def = dynamic_feb21 # * afforestation planing horizon (years) @@ -689,7 +689,7 @@ cfg$gms$s32_planing_horizon <- 50 # def = 50 # * vegetation carbon density. # * Afforestation following plantation growth curves reflects managed or assistent regrowth, # * and might also include non-native species. -cfg$gms$s32_aff_plantation <- 0 # def = 0 +cfg$gms$s32_aff_plantation <- 0 # def = 0 # * BII coefficient for CO2 price driven afforestation # * Switch for using secondary vegetation (0) or timber (1) BII coefficients for CO2 price driven afforestation @@ -697,7 +697,7 @@ cfg$gms$s32_aff_plantation <- 0 # def = 0 # * natural vegetation growth curve (0): secondary vegetation BII coefficient (0) # * plantation growth curve (1): timber BII coefficient (1) # * However, afforestation with plantations (1) could possibly be done in a biodiversity friendly way (0) -cfg$gms$s32_aff_bii_coeff <- 0 # def = 0 +cfg$gms$s32_aff_bii_coeff <- 0 # def = 0 # Afforestation policy # * ("none"): no prescribed afforestation @@ -818,7 +818,7 @@ cfg$gms$c34_urban_scenario <- "SSP2" # def = SSP2 # ***--------------------- 35_natveg -------------------------------------- # * 35_natveg includes primforest, secdforest and other land -# * (dynamic_feb21): Dynamic natural vegetation land with detailed age-classes +# * (dynamic_feb21): Dynamic natural vegetation land with detailed age-classes cfg$gms$natveg <- "dynamic_feb21" # def = dynamic_feb21 # Avoided Deforestation policy @@ -845,7 +845,7 @@ cfg$gms$s35_secdf_distribution <- 0 # def = 0 # * (2): Damage from shifting agriculture is faded out by the year defined in 'cfg$gms$c35_forest_damage_end' cfg$gms$s35_forest_damage <- 2 # def = 2 # * If option (2) above: Year by which damage from shifting agriculture has petered out -cfg$gms$s35_forest_damage_end <- 2050 #def = 2050 +cfg$gms$s35_forest_damage_end <- 2050 #def = 2050 # Harvesting switch for timber production # * 0 = No timber production from natveg, no age-class shifting @@ -877,17 +877,17 @@ cfg$gms$s36_scale_productivity_with_wage <- 0 # default = 0 # * realization of the [38_factor_costs] module. # * (off): labour productivity factor fixed to 1 # * (exo): labour productivity factor is affected by climate change impacts -cfg$gms$labor_prod <- "off" # default = off +cfg$gms$labor_prod <- "off" # default = off # * Additional setting for exo realization only: # * Climate change impact scenario. Options: "rcp119", "rcp585" -cfg$gms$c37_labor_rcp <- "rcp119" # default = "rcp119" +cfg$gms$c37_labor_rcp <- "rcp119" # default = "rcp119" # * Heat assessment metric. Options: "ISO", "HOTHAPS" -cfg$gms$c37_labor_metric <- "ISO" # default = "ISO" +cfg$gms$c37_labor_metric <- "ISO" # default = "ISO" # * Labour intensity. Options: "300W", "400W" -cfg$gms$c37_labor_intensity <- "400W" # default = "400W" +cfg$gms$c37_labor_intensity <- "400W" # default = "400W" # * Uncertainty over ESMs. Options: "enslower", "ensmean", "ensupper" -cfg$gms$c37_labor_uncertainty <- "ensmean" # default = "ensmean" +cfg$gms$c37_labor_uncertainty <- "ensmean" # default = "ensmean" # ***--------------------- 38_factor_costs ------------------------------- @@ -912,22 +912,22 @@ cfg$gms$s38_fix_capital_need <- 2020 # default 2020 # ***--------------------- 39_landconversion ----------------------------- # * (calib): Costs for cropland expansion are scaled with a regional calibration factor -# * Costs for pasture and forestry expansion are global static -cfg$gms$landconversion <- "calib" # def = calib +# * Costs for pasture and forestry expansion are global static +cfg$gms$landconversion <- "calib" # def = calib # * Cost for cropland expansion before calibration (USD05MER per hectare) -cfg$gms$s39_cost_establish_crop <- 10000 #def = 10000 +cfg$gms$s39_cost_establish_crop <- 10000 #def = 10000 # * Share of cropland expansion cost used as reward for cropland reduction in calibration (1) cfg$gms$s39_reward_shr <- 0.66 # * Cost for pasture land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_past <- 8000 #def = 8000 +cfg$gms$s39_cost_establish_past <- 8000 #def = 8000 # * Cost for foresty land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_forestry <- 1000 #def = 1000 +cfg$gms$s39_cost_establish_forestry <- 1000 #def = 1000 # * Cost for urban land expansion (USD05MER per hectare) -cfg$gms$s39_cost_establish_urban <- 10000 #def = 10000 +cfg$gms$s39_cost_establish_urban <- 10000 #def = 10000 # * Switch for ignoring land conversion cost calibration factors # * Options: 1 (ignore calibration factors) -# * 0 (use calibration factors) -cfg$gms$s39_ignore_calib <- 0 #def = 0 +# * 0 (use calibration factors) +cfg$gms$s39_ignore_calib <- 0 #def = 0 # ***--------------------- 40_transport ---------------------------------- # * (off): no transport costs @@ -1052,10 +1052,10 @@ cfg$gms$c43_watavail_scenario <- "cc" # def = "cc" cfg$gms$biodiversity <- "bii_target" # def = bii_target # * Start year for linear increase towards BII target value (in bii_target) or biodiversity target price (in bv_btc_mar21) -cfg$gms$s44_start_year <- 2025 #def = 2025 +cfg$gms$s44_start_year <- 2025 #def = 2025 # * Year in which the BII target value (in bii_target) or biodiversity target price (in bv_btc_mar21) is reached -cfg$gms$s44_target_year <- 2100 #def = 2100 +cfg$gms$s44_target_year <- 2100 #def = 2100 # ** Options for realization `bii_target` # * This realisation allows to define a target value and year for the Biodiversity Intactness Index (BII) @@ -1071,20 +1071,20 @@ cfg$gms$s44_target_year <- 2100 #def = 2100 # * In MAgPIE, the global BII value is about 0.8 in 1995 and declines to 0.795 by 2020. # * Lower bound for BII in target year; plausible range: 0-1 -cfg$gms$s44_bii_lower_bound <- 0 #def = 0 +cfg$gms$s44_bii_lower_bound <- 0 #def = 0 # * Indicative outcomes for `s44_bii_lower_bound` based on c44_bii_decrease = 1, s44_start_year = 2025 and s44_target_year = 2100. -# * < 0.7: continued decrease of global BII -# * 0.74: no further decrease of global BII -# * 0.76: moderate increase of global BII -# * >= 0.78: (very) strong increase of global BII accomplished by high conversion of pasture to non-forest natural land +# * < 0.7: continued decrease of global BII +# * 0.74: no further decrease of global BII +# * 0.76: moderate increase of global BII +# * >= 0.78: (very) strong increase of global BII accomplished by high conversion of pasture to non-forest natural land # * BII lower bound implementation (binary) # * options: 0 (no decrease allowed) or 1 (decrease allowed) # * 0 (no decrease allowed): If the biome-level BII in `s44_start_year` exceeds the lower bound defined in `s44_bii_lower_bound, the BII value in the start year is used as lower bound for BII in all future time steps. # * 1 (decrease allowed): The lower bound for BII can decrease over time, depending on the biome-level BII in the start year and the lower bound defined in `s44_bii_lower_bound. # * Note: The BII constraint is defined as a minimum constraint. Therefore, the actual BII can be higher than the lower bound. -cfg$gms$c44_bii_decrease <- 1 #def = 1 +cfg$gms$c44_bii_decrease <- 1 #def = 1 # ** Options for realization `bv_btc_mar21` @@ -1092,14 +1092,14 @@ cfg$gms$c44_bii_decrease <- 1 #def = 1 # * Price for biodiversity stock loss/gain in target year (USD per ha) # * Plausible range: 0-10000 # * Indicative outcomes -# * 0: decrease of BII -# * 3000: rather constant BII -# * 6000: moderate increase of BII -# * 10000: stronger increase of BII -cfg$gms$s44_target_price <- 0 #def = 0 +# * 0: decrease of BII +# * 3000: rather constant BII +# * 6000: moderate increase of BII +# * 10000: stronger increase of BII +cfg$gms$s44_target_price <- 0 #def = 0 # * Price for biodiversity stock loss/gain in start year (USD per ha) -cfg$gms$s44_start_price <- 0 #def = 0 +cfg$gms$s44_start_price <- 0 #def = 0 # ***------------------------- 45_climate --------------------------------- @@ -1238,62 +1238,62 @@ cfg$gms$scen_countries55 <- all_iso_countries cfg$gms$ghg_policy <- "price_aug22" # def = price_aug22 # * Switch for scaling GHG price with development state (1=on 0=off) -cfg$gms$s56_ghgprice_devstate_scaling <- 0 # def = 0 +cfg$gms$s56_ghgprice_devstate_scaling <- 0 # def = 0 # * Switch for phasing-in GHG price over a 20 year period (1=on 0=off) -cfg$gms$s56_ghgprice_phase_in <- 0 # def = 0 +cfg$gms$s56_ghgprice_phase_in <- 0 # def = 0 # * start year of GHG emission pricing phase-in (only used if s56_ghgprice_phase_in=1) -cfg$gms$s56_ghgprice_start <- 2025 # def = 2025 +cfg$gms$s56_ghgprice_start <- 2025 # def = 2025 # * reduction factor for CO2 price (only used in price_jan19) # * lowers the economic incentive for CO2 emission reduction (avoided deforestation) and afforestation -cfg$gms$s56_cprice_red_factor <- 1 # def = 1 +cfg$gms$s56_cprice_red_factor <- 1 # def = 1 # * GHG emission price scenario # * Note: For best consistency it is recommended to use trajectories from the most recent -# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. +# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. # * Note on available scenarios from coupled REMIND-MAgPIE runs -# * NPi: Current policies; above 3.0°C in 2100 -# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) -# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 +# * NPi: Current policies; above 3.0°C in 2100 +# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) +# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 # * # * Available scenarios: -# * Coupled REMIND-MAgPIE runs -# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, +# * Coupled REMIND-MAgPIE runs +# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, # * R21M42-SSP1-NPi, R21M42-SSP1-PkBudg1100, R21M42-SSP1-PkBudg1300, R21M42-SSP1-PkBudg900, # * R21M42-SSP2-NPi, R21M42-SSP2-PkBudg1100, R21M42-SSP2-PkBudg1300, R21M42-SSP2-PkBudg900, # * R21M42-SSP5-NPi, R21M42-SSP5-PkBudg1100, R21M42-SSP5-PkBudg1300, R21M42-SSP5-PkBudg900, -# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 +# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 # * Standalone REMIND runs from Strefler et al 2021; well-below 2.0°C in 2100 -# * https://www.nature.com/articles/s41467-021-22211-2 -# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT +# * https://www.nature.com/articles/s41467-021-22211-2 +# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT # * SSP Database 2018, various SSP, RCP and Model combinations -# * https://tntcat.iiasa.ac.at/SspDb -# * Caution: using trajectories from other models or older MAgPIE versions might be -# * inconsistent with the current MAgPIE version. -# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, -# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, -# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, -# * SSPDB-SSP1-37-REMIND-MAGPIE, -# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, -# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, -# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, -# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, -# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, -# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, -# * SSPDB-SSP2-37-REMIND-MAGPIE, -# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, -# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, -# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, -# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, -# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, -# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, -# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, -# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, -# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, -# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, -# * SSPDB-SSP5-Ref-REMIND-MAGPIE, +# * https://tntcat.iiasa.ac.at/SspDb +# * Caution: using trajectories from other models or older MAgPIE versions might be +# * inconsistent with the current MAgPIE version. +# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, +# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, +# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, +# * SSPDB-SSP1-37-REMIND-MAGPIE, +# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, +# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, +# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, +# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, +# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, +# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, +# * SSPDB-SSP2-37-REMIND-MAGPIE, +# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, +# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, +# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, +# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, +# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, +# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, +# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, +# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, +# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, +# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, +# * SSPDB-SSP5-Ref-REMIND-MAGPIE, # * Used for producing coupled runs with REMIND-MAgPIE or for exogenous input (see below) # * coupling # * Note: c56_pollutant_prices applies to countries selected in policy_countries56 @@ -1331,12 +1331,12 @@ cfg$gms$s56_c_price_induced_aff <- 1 # * 0 is myopic behaviour (only C price of current time step) # * reflects perfect-foresight if equal to s32_planing_horizon # * should not be higher than s32_planing_horizon -cfg$gms$s56_c_price_exp_aff <- 50 # def = 50 +cfg$gms$s56_c_price_exp_aff <- 50 # def = 50 # * share of carbon credits for afforestation projects pooled in a buffer # * Values > 0 will reduced the incentive for c price induced afforestation # * a plausible value is 0.2, based on the Gold Standard for afforestation projects -cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 +cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 # * Upper limit for CH4 and N2O GHG price (USD05MER per tC) # * Limits GHG prices selected in c56_pollutant_prices to the chosen value. @@ -1347,7 +1347,7 @@ cfg$gms$s56_buffer_aff <- 0.2 # def = 0.2 cfg$gms$s56_limit_ch4_n2o_price <- 1000 # def = 1000 # * NOTE: The following 2 options for emission pricing have strong interactions in runs with CO2 prices and should only be changed by experienced users. -# * The main purpose of these options is to regulate the pricing of positive emissions. Note that re/afforestation is covered by a separate mechanism. +# * The main purpose of these options is to regulate the pricing of positive emissions. Note that re/afforestation is covered by a separate mechanism. # * GHG emission pricing policies # * options: @@ -1366,10 +1366,10 @@ cfg$gms$c56_emis_policy <- "redd+natveg_nosoil" # def = redd+natveg_nosoil # * CO2 emissions subject to carbon pricing # * options: actual, actualNoAcEst -# * actual: CO2 emissions for pricing are based on the difference of actual carbon stocks between time steps -# * actualNoAcEst: CO2 emissions for pricing are based on actual carbon stocks but -# * without newly established forest and non-forest areas. Note that re/afforestation is covered by a separate mechanism. -c56_carbon_stock_pricing <- "actualNoAcEst" # def = actualNoAcEst +# * actual: CO2 emissions for pricing are based on the difference of actual carbon stocks between time steps +# * actualNoAcEst: CO2 emissions for pricing are based on actual carbon stocks but +# * without newly established forest and non-forest areas. Note that re/afforestation is covered by a separate mechanism. +c56_carbon_stock_pricing <- "actualNoAcEst" # def = actualNoAcEst # ***--------------------- 57_maccs --------------------------------------- @@ -1399,9 +1399,9 @@ cfg$gms$s57_maxmac_ch4_entferm <- -1 # def = -1 cfg$gms$s57_maxmac_ch4_awms <- -1 # def = -1 # ***--------------------- 58_peatland ------------------------------------ -# * (off): Peatland area and associated GHG emissions are assumed zero -# * (on): Peatland area is initialized with present-day degraded and intact peatland. -# * GHG emissions are calculated using IPCC Tier 1 emission factors (2013 Wetland supplement). +# * (off): Peatland area and associated GHG emissions are assumed zero +# * (on): Peatland area is initialized with present-day degraded and intact peatland. +# * GHG emissions are calculated using IPCC Tier 1 emission factors (2013 Wetland supplement). cfg$gms$peatland <- "on" # def = on # * peatland rewetting @@ -1431,8 +1431,8 @@ cfg$gms$s58_cost_balance <- 1e+06 # def = 1e+06 # * Switch for fixing peatland area to 2015 levels from 1995 onwards until the given year # * Note: The initial peatland area is only available for the year 2015. -# * Fixing the peatland area in previous time steps to 2015 levels provides a better -# * proxy for GHG emissions from peatlands than assuming no peatland area. +# * Fixing the peatland area in previous time steps to 2015 levels provides a better +# * proxy for GHG emissions from peatlands than assuming no peatland area. cfg$gms$s58_fix_peatland <- 2015 # def = 2015 # ***------------------------- 59_som ------------------------------------- @@ -1477,48 +1477,48 @@ cfg$gms$c60_1stgen_biodem <- "const2020" # def = const2020 # * 2nd generation bioenergy demand scenario # * Note: For best consistency it is recommended to use trajectories from the most recent -# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. +# * coupled REMIND-MAgPIE runs. Currently, this is R21M42. # * Note on available scenarios from coupled REMIND-MAgPIE runs -# * NPi: Current policies; above 3.0°C in 2100 -# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) -# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 +# * NPi: Current policies; above 3.0°C in 2100 +# * PkBudg900: Budget with 900 GtCO2; well-below 1.5°C in 2100 (PkBudg1000 for SDP) +# * PkBudg1300: Budget with 1300 GtCO2; well-below 2.0°C in 2100 # * # * Available scenarios: -# * Coupled REMIND-MAgPIE runs -# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, +# * Coupled REMIND-MAgPIE runs +# * R21M42-SDP-NPi, R21M42-SDP-PkBudg1000, R21M42-SDP-PkBudg1100, R21M42-SDP-PkBudg900, # * R21M42-SSP1-NPi, R21M42-SSP1-PkBudg1100, R21M42-SSP1-PkBudg1300, R21M42-SSP1-PkBudg900, # * R21M42-SSP2-NPi, R21M42-SSP2-PkBudg1100, R21M42-SSP2-PkBudg1300, R21M42-SSP2-PkBudg900, # * R21M42-SSP5-NPi, R21M42-SSP5-PkBudg1100, R21M42-SSP5-PkBudg1300, R21M42-SSP5-PkBudg900, -# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 +# * R2M41-SSP2-NPi, R2M41-SSP2-NDC, R2M41-SSP2-Budg1300, R2M41-SSP2-Budg600, R2M41-SSP2-Budg950 # * Standalone REMIND runs from Strefler et al 2021; well-below 2.0°C in 2100 -# * https://www.nature.com/articles/s41467-021-22211-2 -# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT +# * https://www.nature.com/articles/s41467-021-22211-2 +# * PIK_GDP, PIK_H2C, PIK_HBL, PIK_HOS, PIK_LIN, PIK_NPI, PIK_OPT # * SSP Database 2018, various SSP, RCP and Model combinations -# * https://tntcat.iiasa.ac.at/SspDb -# * Caution: using trajectories from other models or older MAgPIE versions might be -# * inconsistent with the current MAgPIE version. -# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, -# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, -# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, -# * SSPDB-SSP1-37-REMIND-MAGPIE, -# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, -# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, -# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, -# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, -# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, -# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, -# * SSPDB-SSP2-37-REMIND-MAGPIE, -# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, -# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, -# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, -# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, -# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, -# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, -# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, -# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, -# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, -# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, -# * SSPDB-SSP5-Ref-REMIND-MAGPIE, +# * https://tntcat.iiasa.ac.at/SspDb +# * Caution: using trajectories from other models or older MAgPIE versions might be +# * inconsistent with the current MAgPIE version. +# * SSPDB-SSP1-20-IMAGE,SSPDB-SSP1-20-REMIND-MAGPIE, +# * SSPDB-SSP1-26-IMAGE,SSPDB-SSP1-26-REMIND-MAGPIE, +# * SSPDB-SSP1-34-IMAGE,SSPDB-SSP1-34-REMIND-MAGPIE, +# * SSPDB-SSP1-37-REMIND-MAGPIE, +# * SSPDB-SSP1-45-IMAGE,SSPDB-SSP1-45-REMIND-MAGPIE, +# * SSPDB-SSP1-Ref-IMAGE,SSPDB-SSP1-Ref-REMIND-MAGPIE, +# * SSPDB-SSP2-18-MESSAGE-GLOBIOM,SSPDB-SSP2-19-MESSAGE-GLOBIOM, +# * SSPDB-SSP2-20-MESSAGE-GLOBIOM,SSPDB-SSP2-20-REMIND-MAGPIE, +# * SSPDB-SSP2-26-MESSAGE-GLOBIOM,SSPDB-SSP2-26-REMIND-MAGPIE, +# * SSPDB-SSP2-34-MESSAGE-GLOBIOM,SSPDB-SSP2-34-REMIND-MAGPIE, +# * SSPDB-SSP2-37-REMIND-MAGPIE, +# * SSPDB-SSP2-45-MESSAGE-GLOBIOM,SSPDB-SSP2-45-REMIND-MAGPIE, +# * SSPDB-SSP2-60-MESSAGE-GLOBIOM,SSPDB-SSP2-60-REMIND-MAGPIE, +# * SSPDB-SSP2-Ref-MESSAGE-GLOBIOM,SSPDB-SSP2-Ref-REMIND-MAGPIE, +# * SSPDB-SSP3-34-AIM-CGE,SSPDB-SSP3-45-AIM-CGE, +# * SSPDB-SSP3-60-AIM-CGE,SSPDB-SSP4-26-GCAM4, +# * SSPDB-SSP4-34-GCAM4,SSPDB-SSP4-45-GCAM4, +# * SSPDB-SSP4-60-GCAM4,SSPDB-SSP4-Ref-GCAM4, +# * SSPDB-SSP5-20-REMIND-MAGPIE,SSPDB-SSP5-26-REMIND-MAGPIE, +# * SSPDB-SSP5-34-REMIND-MAGPIE,SSPDB-SSP5-37-REMIND-MAGPIE, +# * SSPDB-SSP5-45-REMIND-MAGPIE,SSPDB-SSP5-60-REMIND-MAGPIE, +# * SSPDB-SSP5-Ref-REMIND-MAGPIE, # * Used for producing coupled runs with REMIND-MAgPIE or for exogenous input (see below) # * coupling # * Note: c60_2ndgen_biodem applies to countries selected in scen_countries60 @@ -1553,7 +1553,7 @@ cfg$gms$c60_biodem_level <- 1 # def = 1 # * Minimum dedicated 2nd generation bioenergy demand assumed in each region (mio. GJ per yr) # * Without a minimum demand, there is the risk that some regions won't have a price for 2nd generation bioenergy. # * Therefore, the minimum demand is of particular importance for the coupling with REMIND. -cfg$gms$s60_2ndgen_bioenergy_dem_min <- 1 # def = 1 +cfg$gms$s60_2ndgen_bioenergy_dem_min <- 1 # def = 1 # * first generation bioenergy subsidy (USD05MER per ton) cfg$gms$c60_bioenergy_subsidy <- 300 # def = 300 @@ -1581,7 +1581,7 @@ cfg$gms$s62_midpoint_dem_bioplastic <- 2050 # def = 2050 cfg$gms$livestock <- "fbask_jan16" # def = fbask_jan16 # * Year until the pasture management factor is fixed to 1 -cfg$gms$s70_past_mngmnt_factor_fix <- "2005" # def = 2005 +cfg$gms$s70_past_mngmnt_factor_fix <- "2005" # def = 2005 # * feed scenario # * options: SSP: ssp1, ssp2, ssp3, ssp4, ssp5 @@ -1592,9 +1592,9 @@ cfg$gms$c70_feed_scen <- "ssp2" # def = ssp2 # * Feed substitution scenarios. # * options consist of 3 parts: functional form (lin,sigmoid), target (zero, 20pc, 50pc, 80pc, 90pc) and transition period (10_50: from 2010 to 2050, 20_50: from 2020 to 2050) # * Example for sigmoid_50pc_20_50: -# * Functional form: sigmoid (S-shaped) -# * Target: 50percent reduction at end of transition period (2050 in this case) -# * Transition period: start in 2020, end in 2050 +# * Functional form: sigmoid (S-shaped) +# * Target: 50percent reduction at end of transition period (2050 in this case) +# * Transition period: start in 2020, end in 2050 # * options: constant, # * lin_zero_10_50, lin_zero_20_50, lin_zero_20_30, lin_zero_20_70, lin_50pc_20_50, lin_50pc_20_50_extend65, lin_50pc_20_50_extend80, # * lin_50pc_10_50_extend90, lin_75pc_10_50_extend90, lin_80pc_20_50, lin_80pc_20_50_extend95, lin_90pc_20_50_extend95, diff --git a/modules/36_employment/exo_may22/declarations.gms b/modules/36_employment/exo_may22/declarations.gms index 65b2dcd02e..a2cc803cb5 100644 --- a/modules/36_employment/exo_may22/declarations.gms +++ b/modules/36_employment/exo_may22/declarations.gms @@ -25,7 +25,7 @@ parameters p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) p36_cost_share(t,i) Capital share of factor costs (1) p36_share_calibration(i) Additive calibration term for capital shares (1) - p36_nonmagpie_labor_costs(t,i) Labor costs from subsidies and VoP not covered by MAgPIE (mio. USDMER05) + p36_nonmagpie_labor_costs(t,i) Labor costs from subsidies and Value of Production not covered by MAgPIE (mio. USDMER05) ; *#################### R SECTION START (OUTPUT DECLARATIONS) #################### diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index a26b81a515..f3e1929b5f 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -8,7 +8,7 @@ *' @equations -*' Employment is calculated as total labor costs devided by hourly labor costs and +*' Employment is calculated as total labor costs divided by hourly labor costs and *' average hours worked per employed person per year. Total labor costs include *' labor costs from crop production (see [38_factor_costs]) and livestock production *' (see [70_livestock]), and some labor costs for crop and livestock production diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index c3dc89da1f..7eae773c08 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -8,7 +8,7 @@ scalars s36_weeks_in_year number of weeks in a year / 52.1429 / s36_minimum_wage global minimum wage / 0 / -s36_scale_productivity_with_wage whether labor productivity should be scaled according to wage increase / 1 / +s36_scale_productivity_with_wage whether labor productivity should be scaled according to wage increase / 0 / ; table f36_weekly_hours(t_all,i) Historical values of average weekly hours worked per person in agriculture (h per week) From b02c47d672232da0521fdd7cd635859ea5f869a5 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Sat, 1 Oct 2022 13:29:43 +0200 Subject: [PATCH 21/22] implemented productivity gain from wages for continuous values instead of boolean --- CHANGELOG.md | 7 ++-- config/default.cfg | 17 +++++---- .../36_employment/exo_may22/declarations.gms | 8 ++-- modules/36_employment/exo_may22/equations.gms | 2 +- modules/36_employment/exo_may22/input.gms | 6 +-- modules/36_employment/exo_may22/preloop.gms | 38 ++++++++++--------- modules/36_employment/exo_may22/presolve.gms | 2 +- .../36_employment/exo_may22/realization.gms | 2 +- modules/36_employment/exo_may22/sets.gms | 2 + .../per_ton_fao_may22/equations.gms | 7 ++-- .../per_ton_fao_may22/not_used.txt | 2 - .../sticky_feb18/equations.gms | 7 ++-- .../38_factor_costs/sticky_feb18/not_used.txt | 2 - .../sticky_labor/declarations.gms | 1 - .../sticky_labor/equations.gms | 6 +-- .../38_factor_costs/sticky_labor/preloop.gms | 5 --- .../38_factor_costs/sticky_labor/presolve.gms | 8 ++-- .../70_livestock/fbask_jan16/equations.gms | 8 ++-- 18 files changed, 66 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a28333b29..15c5fc4007 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### changed -- **config** new switches `s36_minimum_wage`, `s36_scale_labor_costs`, and `s38_fix_capital_need` -- **38_factor_costs** and **70_livestock** included labor cost scaling in case of minimum wage scenario -- **36_employment** included calculations for of minimum wage scenario +- **config** new switches `s36_minimum_wage`, `s36_scale_productivity_with_wage`, and `s38_fix_capital_need` +- **38_factor_costs** included labor cost scaling in case of wage scenario +- **70_livestock** included labor cost scaling in case of wage scenario +- **36_employment** included calculations for minimum wage scenario - **config** added `s62_max_dem_bioplastic` and `s62_midpoint_dem_bioplastic` to define bioplastic scenario - **62_material** added biomass demand for bioplastic production - **config** updated config to new module setup of MACCs diff --git a/config/default.cfg b/config/default.cfg index 70f39ad093..6f99b8c47b 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -859,15 +859,18 @@ cfg$gms$s35_hvarea <- 0 # def = 0 # * optimization cfg$gms$employment <- "exo_may22" # default = "exo_may22" -# * global minimum wage that needs to reached in all countries by 2050 +# * global minimum wage in USDMER05 per hour that needs to be reached in all countries by 2050 cfg$gms$s36_minimum_wage <- 0 # default = 0 (no minimum wage) -# * A scenario with higher wages (compared to the baseline wages) can either lead to -# * higher total labor costs (if productivity stays the same), or go together with -# * higher labor productivity (e.g. if both are assumed to rise due to better education). -# * s36_scale_productivity_with_wage is a boolean switch to decide whether the labor -# * productivity should change proportional to the wage difference between baseline -# * and wage scenario (1) or not (0). +# * A scenario that increases wages can either be fully related to productivity increase +# * (leading to lower employment for the same total labor costs), or keep productivity +# * constant (leading to the same employment for higher total labor costs), or to a +# * mixture between productivity increase an total labor cost increase. +# * The scalar `s36_scale_productivity_with_wage` describes how high the labor productivity +# * gain should be relative to the increase in hourly labor costs. If set to 0, +# * productivity stays constant, if set to 1 productivity scales proportional to hourly +# * labor costs. Other positive values lead to a mixture of productivity gain and increase +# * in total costs. cfg$gms$s36_scale_productivity_with_wage <- 0 # default = 0 # ***--------------------- 37_labor_prod --------------------------------- diff --git a/modules/36_employment/exo_may22/declarations.gms b/modules/36_employment/exo_may22/declarations.gms index a2cc803cb5..6d5151a672 100644 --- a/modules/36_employment/exo_may22/declarations.gms +++ b/modules/36_employment/exo_may22/declarations.gms @@ -15,12 +15,10 @@ positive variables ; parameters - p36_hourly_costs_iso_baseline(t,iso) Hourly labor costs in agriculture on iso level (USDMER05 per hour) + p36_hourly_costs_iso(t,iso, wage_scen) Hourly labor costs in agriculture on iso level before and after including wage scenario (USDMER05 per hour) p36_hourly_costs_increase(iso) Difference between minimum hourly labor costs and actual hourly labor costs in 2050 (USDMER05 per hour) - p36_hourly_costs_iso(t,iso) Hourly labor costs in agriculture on iso level after including minimum wage (USDMER05 per hour) - pm_hourly_costs_baseline(t,i) Hourly labor costs in agriculture on regional level (USDMER05 per hour) - pm_hourly_costs(t,i) Hourly labor costs in agriculture on regional level after including minimum wage (USDMER05 per hour) - pm_labor_cost_scaling(t,i) Multiplicative factor describing increase in hourly labor costs to match minimum wage (1) + pm_hourly_costs(t,i, wage_scen) Hourly labor costs in agriculture on regional level before and after including wage scenario (USDMER05 per hour) + pm_productivity_gain_from_wages(t,i) Multiplicative factor describing productivity gain related to higher wages (1) p36_total_hours_worked(iso) Total hours worked by all employed people (mio. hours per year) p36_calibration_hourly_costs(iso) Additive calibration term for hourly labor costs (USDMER05 per hour) p36_cost_share(t,i) Capital share of factor costs (1) diff --git a/modules/36_employment/exo_may22/equations.gms b/modules/36_employment/exo_may22/equations.gms index f3e1929b5f..0c36cdc01f 100644 --- a/modules/36_employment/exo_may22/equations.gms +++ b/modules/36_employment/exo_may22/equations.gms @@ -19,5 +19,5 @@ * and fish (as we cannot calibrate labor costs for fish to employment data) q36_employment(i2) .. v36_employment(i2) =e= (vm_cost_prod_crop(i2,"labor") + vm_cost_prod_livst(i2,"labor") + sum(ct,p36_nonmagpie_labor_costs(ct,i2))) * - (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*pm_hourly_costs(ct,i2))); + (1 / sum(ct,f36_weekly_hours(ct,i2)*s36_weeks_in_year*pm_hourly_costs(ct,i2,"scenario"))); diff --git a/modules/36_employment/exo_may22/input.gms b/modules/36_employment/exo_may22/input.gms index 7eae773c08..58d998db51 100644 --- a/modules/36_employment/exo_may22/input.gms +++ b/modules/36_employment/exo_may22/input.gms @@ -6,9 +6,9 @@ *** | Contact: magpie@pik-potsdam.de scalars -s36_weeks_in_year number of weeks in a year / 52.1429 / -s36_minimum_wage global minimum wage / 0 / -s36_scale_productivity_with_wage whether labor productivity should be scaled according to wage increase / 0 / +s36_weeks_in_year number of weeks in a year (weeks per yr) / 52.1429 / +s36_minimum_wage global minimum wage (USDMER05 per hour) / 0 / +s36_scale_productivity_with_wage how strong the wage increase should affect labor productivity (1) / 0 / ; table f36_weekly_hours(t_all,i) Historical values of average weekly hours worked per person in agriculture (h per week) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index fb8e09e794..a46d8b1a2e 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -16,17 +16,17 @@ p36_total_hours_worked(iso) = sum(t_past$(ord(t_past) eq card(t_past)), f36_hist *' GDPpcMER, which is calibrated such that historic values of agricultural employment *' are met. A threshold is used in the regression to avoid too low or negative hourly *' labor costs. -p36_hourly_costs_iso_baseline(t,iso) = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope") + f36_regr_hourly_costs("intercept") + p36_calibration_hourly_costs(iso)), f36_regr_hourly_costs("threshold")); +p36_hourly_costs_iso(t,iso,"baseline") = max((im_gdp_pc_mer_iso(t,iso)*f36_regr_hourly_costs("slope") + f36_regr_hourly_costs("intercept") + p36_calibration_hourly_costs(iso)), f36_regr_hourly_costs("threshold")); *' @stop -p36_hourly_costs_iso_baseline(t,iso)$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); +p36_hourly_costs_iso(t,iso,"baseline")$(sum(sameas(t_past,t),1) = 1) = f36_hist_hourly_costs(t,iso); * necessary increase in hourly labor costs in target year (2050) to match minimum wage -p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso_baseline("y2050",iso); +p36_hourly_costs_increase(iso) = s36_minimum_wage-p36_hourly_costs_iso("y2050",iso,"baseline"); -p36_hourly_costs_iso(t,iso) = p36_hourly_costs_iso_baseline(t,iso); +p36_hourly_costs_iso(t,iso,"scenario") = p36_hourly_costs_iso(t,iso,"baseline"); *' @code *' In case of a scenario with an external global minimum wage we add a linear term to the baseline @@ -38,24 +38,28 @@ p36_hourly_costs_iso(t,iso) = p36_hourly_costs_iso_baseline(t,iso); *' If baseline hourly labor costs are already high enough to meet the minimum wage in 2050, they are not changed. *' @stop -p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso_baseline(t,iso) + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); +p36_hourly_costs_iso(t,iso,"scenario")$((m_year(t) gt 2020) and (m_year(t) le 2050)) = p36_hourly_costs_iso(t,iso,"baseline") + max(0, ((m_year(t)-2020)/(2050-2020))*p36_hourly_costs_increase(iso)); -p36_hourly_costs_iso(t,iso)$((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, p36_hourly_costs_iso_baseline(t,iso) + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); +p36_hourly_costs_iso(t,iso,"scenario")$((m_year(t) gt 2050) and (m_year(t) le 2100)) = max(s36_minimum_wage, p36_hourly_costs_iso(t,iso,"baseline") + max(0, p36_hourly_costs_increase(iso)-((m_year(t)-2050)/(2100-2050))*p36_hourly_costs_increase(iso))); * Hourly labor costs are then aggregated to regional level using the total hours worked in the last * year of `t_past` as weight. -pm_hourly_costs_baseline(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso_baseline(t,iso)*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); -pm_hourly_costs(t,i) = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso)*p36_total_hours_worked(iso))*(1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +pm_hourly_costs(t,i,"baseline") = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso,"baseline")*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); +pm_hourly_costs(t,i,"scenario") = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,iso,"scenario")*p36_total_hours_worked(iso)) * (1/sum(i_to_iso(i,iso),p36_total_hours_worked(iso))); *' @code -*' If productivity is assumed to increase proportional to hourly labor costs also with external wage scenario, -*' total labor costs should not be scaled. Otherwise, the scaling factor between baseline and increased hourly labor costs will -*' be applied to labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the -*' non-MAgPIE labor costs. -if (s36_scale_productivity_with_wage eq 1, - pm_labor_cost_scaling(t,i) = 1; -elseif (s36_scale_productivity_with_wage eq 0), - pm_labor_cost_scaling(t,i) = pm_hourly_costs(t,i) / pm_hourly_costs_baseline(t,i); -); +*' A scenario that increases wages can either be fully related to productivity increase (leading to lower employment +*' for the same total labor costs), or keep productivity constant (leading to the same employment for higher total labor +*' costs), or to a mixture between productivity increase an total labor cost increase. +*' The scalar `s36_scale_productivity_with_wage` describes how high the labor productivity gain should be relative to +*' the increase in hourly labor costs and is used to calculate `pm_productivity_gain_from_wages`, which is applied to +*' labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the non-MAgPIE +*' labor costs. If `s36_scale_productivity_with_wage = 1` the productivity gain and wage increase cancel out, +*' leading to the same total labor costs as without wage scenario. For `s36_scale_productivity_with_wage = 0` the total +*' labor costs scale proportional to the hourly labor costs. For other values, the total labor costs show a non-linear +*' realtionship with `s36_scale_productivity_with_wage`. + +pm_productivity_gain_from_wages(t,i) = s36_scale_productivity_with_wage * (pm_hourly_costs(t,i,"scenario") / pm_hourly_costs(t,i,"baseline")) + (1 - s36_scale_productivity_with_wage); + *' @stop diff --git a/modules/36_employment/exo_may22/presolve.gms b/modules/36_employment/exo_may22/presolve.gms index 71d0a85fb2..cd369f9017 100644 --- a/modules/36_employment/exo_may22/presolve.gms +++ b/modules/36_employment/exo_may22/presolve.gms @@ -20,6 +20,6 @@ elseif (m_year(t)>=2010), *' categories not covered by MAgPIE (i.e. wool, beeswax, honey, silk-worms), which *' are both kept constant for future years. -p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * pm_labor_cost_scaling(t,i); +p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * (1/pm_productivity_gain_from_wages(t,i)) * (pm_hourly_costs(t,i,"baseline") / pm_hourly_costs(t,i,"scenario")); *' @stop diff --git a/modules/36_employment/exo_may22/realization.gms b/modules/36_employment/exo_may22/realization.gms index 681ed5b42e..78960892cf 100644 --- a/modules/36_employment/exo_may22/realization.gms +++ b/modules/36_employment/exo_may22/realization.gms @@ -9,7 +9,7 @@ *' on it's relation to total labor costs. It therefore depends *' on the labor costs calculated in the modules [38_factor_costs] and *' [70_livestock]. Resulting total costs and production patterns can be affected -*' if an external minimum wage is set, which increases labor costs for +*' if an external wage scenario is used, which increases labor costs for *' crop and livestock production in [38_factor_costs] and [70_livestock]. *' @limitations Labor availability is not seen as a limiting factor for diff --git a/modules/36_employment/exo_may22/sets.gms b/modules/36_employment/exo_may22/sets.gms index 793ec52e39..71a1244476 100644 --- a/modules/36_employment/exo_may22/sets.gms +++ b/modules/36_employment/exo_may22/sets.gms @@ -8,4 +8,6 @@ sets reg36 regression coefficients / slope, intercept, threshold / + wage_scen version of wages + / baseline, scenario / ; diff --git a/modules/38_factor_costs/per_ton_fao_may22/equations.gms b/modules/38_factor_costs/per_ton_fao_may22/equations.gms index 847616399a..f599ccc447 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/equations.gms +++ b/modules/38_factor_costs/per_ton_fao_may22/equations.gms @@ -8,7 +8,7 @@ *' @equations q38_cost_prod_crop_labor(i2) .. - vm_cost_prod_crop(i2,"labor") =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr))) * sum(ct,p38_cost_share(ct,i2,"labor") * pm_labor_cost_scaling(ct,i2)); + vm_cost_prod_crop(i2,"labor") =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr))) * sum(ct,p38_cost_share(ct,i2,"labor") * (1/pm_productivity_gain_from_wages(ct,i2)) * (pm_hourly_costs(ct,i2,"scenario") / pm_hourly_costs(ct,i2,"baseline"))); q38_cost_prod_crop_capital(i2) .. vm_cost_prod_crop(i2,"capital") =e= sum(kcr, vm_prod_reg(i2,kcr) * sum(ct,i38_fac_req(ct,i2,kcr)))* sum(ct,p38_cost_share(ct,i2,"capital")); @@ -20,8 +20,9 @@ *' from FAO Value of Production, to which the USDA factor cost share out of total *' costs was applied. Labor and capital costs are split by applying the corresponding *' share out of total factor costs. -*' To account for increased hourly labor costs in case of an external minimum wage, -*' the total labor costs are scaled by the corresponding factor from [36_employment]. +*' To account for increased hourly labor costs and producitivity in case of an external +*' wage scenario, the total labor costs are scaled by the corresponding increase in hourly +*' labor costs and the related productivity gain from [36_employment]. *' *' It is worth to mention again that the factor costs in this module *' do not include land rents (as MAgPIE calculates land rents endogenously), diff --git a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt index 7a58fa28f0..a76ea293ff 100644 --- a/modules/38_factor_costs/per_ton_fao_may22/not_used.txt +++ b/modules/38_factor_costs/per_ton_fao_may22/not_used.txt @@ -9,5 +9,3 @@ name,type,reason pm_interest,input,questionnaire vm_prod,input,questionnaire pm_prod_init,par,questionnaire -pm_hourly_costs_baseline,par,questionnaire -pm_hourly_costs,par,questionnaire diff --git a/modules/38_factor_costs/sticky_feb18/equations.gms b/modules/38_factor_costs/sticky_feb18/equations.gms index 7361f037d4..19b38686d0 100644 --- a/modules/38_factor_costs/sticky_feb18/equations.gms +++ b/modules/38_factor_costs/sticky_feb18/equations.gms @@ -8,11 +8,12 @@ *' @equations *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirments per output. -*' To account for increased hourly labor costs in case of an external minimum wage, -*' the total labor costs are scaled by the corresponding factor from [36_employment]. +*' To account for increased hourly labor costs and producitivity in case of an external +*' wage scenario, the total labor costs are scaled by the corresponding increase in hourly +*' labor costs and the related productivity gain from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_labor_need(ct,i2,kcr) * pm_labor_cost_scaling(ct,i2))) + =e= sum(kcr,vm_prod_reg(i2,kcr) * sum(ct,p38_labor_need(ct,i2,kcr) * (1/pm_productivity_gain_from_wages(ct,i2)) * (pm_hourly_costs(ct,i2,"scenario") / pm_hourly_costs(ct,i2,"baseline")))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/38_factor_costs/sticky_feb18/not_used.txt b/modules/38_factor_costs/sticky_feb18/not_used.txt index 3fc4b7f058..a40b473c2f 100644 --- a/modules/38_factor_costs/sticky_feb18/not_used.txt +++ b/modules/38_factor_costs/sticky_feb18/not_used.txt @@ -5,5 +5,3 @@ # | MAgPIE License Exception, version 1.0 (see LICENSE file). # | Contact: magpie@pik-potsdam.de name,type,reason -pm_hourly_costs_baseline,par,questionnaire -pm_hourly_costs,par,questionnaire diff --git a/modules/38_factor_costs/sticky_labor/declarations.gms b/modules/38_factor_costs/sticky_labor/declarations.gms index 48cd356aa3..16197e39cf 100644 --- a/modules/38_factor_costs/sticky_labor/declarations.gms +++ b/modules/38_factor_costs/sticky_labor/declarations.gms @@ -36,7 +36,6 @@ parameters i38_ces_scale(j,kcr) Scaling factor for total factor productivity (1) p38_intr_depr(t,i) Factor from interest and depreciation rate (1) - p38_labor_prod_wage(t,i) Change in labor productivity due to higher wages (1) i38_fac_req(t_all,i,kcr) Factor requirements (USD05MER per tDM) ; diff --git a/modules/38_factor_costs/sticky_labor/equations.gms b/modules/38_factor_costs/sticky_labor/equations.gms index 481874927a..26e1864172 100644 --- a/modules/38_factor_costs/sticky_labor/equations.gms +++ b/modules/38_factor_costs/sticky_labor/equations.gms @@ -12,21 +12,21 @@ *' The CES function accounts for capital `v38_capital_need` and labor `v38_laborhours_need` requirements. *' The efficiency of labor is affected by the labor productivity factor `pm_labor_prod` based on climate *' change impacts, which is provided by the labor productivity module [37_labor_prod], and by the factor -*' `p38_labor_prod_wage` based on increased wages from [36_employment]. +*' `pm_productivity_gain_from_wages` based on increased wages from [36_employment]. *' The calculation of total capital and labor costs is covered by the equations `q38_cost_prod_crop` and `q38_cost_prod_inv`. *' The conceptual and analytical details of the CES function including the labor productivity factor are documented in @orlov_ces_2021. q38_ces_prodfun(j2,kcr) .. i38_ces_scale(j2,kcr) * (i38_ces_shr(j2,kcr)*sum(mobil38, v38_capital_need(j2,kcr,mobil38))**(-s38_ces_elast_par) + - (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2) * sum(cell(i2,j2), p38_labor_prod_wage(ct,i2))) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) + (1 - i38_ces_shr(j2,kcr))*(sum(ct, pm_labor_prod(ct,j2) * sum(cell(i2,j2), pm_productivity_gain_from_wages(ct,i2))) * v38_laborhours_need(j2,kcr))**(-s38_ces_elast_par))**(-1/s38_ces_elast_par) =e= 1 ; *' Labor costs: The labor costs are calculated by multiplying regional aggregated production with labor requirements *' (in hours) per output unit and wages from [36_employment]. q38_cost_prod_labor(i2).. vm_cost_prod_crop(i2,"labor") - =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_laborhours_need(j2,kcr) * sum(ct, pm_hourly_costs(ct,i2)))) + =e= sum(kcr,sum(cell(i2,j2), vm_prod(j2,kcr) * v38_laborhours_need(j2,kcr) * sum(ct, pm_hourly_costs(ct,i2,"scenario")))) ; *' Investment costs: Investment are the summation of investment in mobile and immobile capital. The costs are annuitized, diff --git a/modules/38_factor_costs/sticky_labor/preloop.gms b/modules/38_factor_costs/sticky_labor/preloop.gms index 300155beaa..8068b9b489 100644 --- a/modules/38_factor_costs/sticky_labor/preloop.gms +++ b/modules/38_factor_costs/sticky_labor/preloop.gms @@ -9,8 +9,3 @@ s38_ces_elast_par = (1/s38_ces_elast_subst) - 1 ; p38_intr_depr(t,i) = (1-s38_depreciation_rate) * pm_interest(t,i)/(1+pm_interest(t,i)) + s38_depreciation_rate; - - -* labor productivity change due to higher wages (if higher wages don't lead to higher total labor costs) -p38_labor_prod_wage(t,i)$(pm_labor_cost_scaling(t,i) = 1) = pm_hourly_costs(t,i) / pm_hourly_costs_baseline(t,i); -p38_labor_prod_wage(t,i)$(pm_labor_cost_scaling(t,i) <> 1) = 1; \ No newline at end of file diff --git a/modules/38_factor_costs/sticky_labor/presolve.gms b/modules/38_factor_costs/sticky_labor/presolve.gms index 7eebda5aef..b131c04812 100644 --- a/modules/38_factor_costs/sticky_labor/presolve.gms +++ b/modules/38_factor_costs/sticky_labor/presolve.gms @@ -35,9 +35,9 @@ p38_capital_need(t,i,kcr,"immobile") = i38_fac_req(t,i,kcr) * p38_cost_share(t, *** Variable labor costs BEGIN * set bounds for labor requirements (in terms of hours worked per output unit) -v38_laborhours_need.lo(j,kcr) = 0.1 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i))); -v38_laborhours_need.l(j,kcr) = sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i)); -v38_laborhours_need.up(j,kcr) = 10 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs_baseline(t,i))); +v38_laborhours_need.lo(j,kcr) = 0.1 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs(t,i,"baseline"))); +v38_laborhours_need.l(j,kcr) = sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs(t,i,"baseline")); +v38_laborhours_need.up(j,kcr) = 10 * (sum(cell(i,j),p38_labor_need(t,i,kcr)) / sum(cell(i,j), pm_hourly_costs(t,i,"baseline"))); * set bounds for captial requirements if (m_year(t) <= s38_fix_capital_need, @@ -49,7 +49,7 @@ else ); * update CES parameters -i38_ces_shr(j,kcr) = sum(cell(i,j), (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + pm_hourly_costs_baseline(t,i) * v38_laborhours_need.l(j,kcr)**(1 + s38_ces_elast_par))); +i38_ces_shr(j,kcr) = sum(cell(i,j), (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par)) / (p38_intr_depr(t,i) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(1 + s38_ces_elast_par) + pm_hourly_costs(t,i,"baseline") * v38_laborhours_need.l(j,kcr)**(1 + s38_ces_elast_par))); i38_ces_scale(j,kcr) = sum(cell(i,j), 1/([i38_ces_shr(j,kcr) * sum(mobil38, v38_capital_need.l(j,kcr,mobil38))**(-s38_ces_elast_par) + (1 - i38_ces_shr(j,kcr)) * v38_laborhours_need.l(j,kcr)**(-s38_ces_elast_par)]**(-1/s38_ces_elast_par))); *** Variable labor costs END diff --git a/modules/70_livestock/fbask_jan16/equations.gms b/modules/70_livestock/fbask_jan16/equations.gms index 3268d3fcfc..c1ed962ead 100644 --- a/modules/70_livestock/fbask_jan16/equations.gms +++ b/modules/70_livestock/fbask_jan16/equations.gms @@ -29,14 +29,16 @@ q70_feed(i2,kap,kall) .. *' `i70_cost_regr(i,kli,"cost_regr_b")` is set to zero in the case of livestock *' products generated in monogastric systems. -*' To account for increased hourly labor costs in case of an external minimum wage, -*' the total labor costs are scaled by the corresponding factor from [36_employment]. +*' To account for increased hourly labor costs and producitivity in case of an external +*' wage scenario, the total labor costs are scaled by the corresponding increase in hourly +*' labor costs and the related productivity gain from [36_employment]. q70_cost_prod_liv_labor(i2) .. vm_cost_prod_livst(i2,"labor") =e= sum(kli, vm_prod_reg(i2,kli) *(i70_cost_regr(i2,kli,"cost_regr_a") + i70_cost_regr(i2,kli,"cost_regr_b") *sum((ct, sys_to_kli(sys,kli)),i70_livestock_productivity(ct,i2,sys)))) - *sum(ct, p70_cost_share_livst(ct,i2,"labor")) * sum(ct, pm_labor_cost_scaling(ct,i2)); + *sum(ct, p70_cost_share_livst(ct,i2,"labor")) + *sum(ct, (1/pm_productivity_gain_from_wages(ct,i2)) * (pm_hourly_costs(ct,i2,"scenario") / pm_hourly_costs(ct,i2,"baseline"))); q70_cost_prod_liv_capital(i2) .. vm_cost_prod_livst(i2,"capital") =e= sum(kli, vm_prod_reg(i2,kli) From 429f9b9c228bce5fde884dd589d4fc08104b8dd9 Mon Sep 17 00:00:00 2001 From: Debbora Leip Date: Tue, 4 Oct 2022 10:10:39 +0200 Subject: [PATCH 22/22] updated documentation --- modules/36_employment/exo_may22/preloop.gms | 2 +- modules/36_employment/exo_may22/presolve.gms | 2 +- modules/36_employment/exo_may22/realization.gms | 7 +++++-- modules/36_employment/module.gms | 6 +++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/36_employment/exo_may22/preloop.gms b/modules/36_employment/exo_may22/preloop.gms index a46d8b1a2e..806a6ba5c0 100644 --- a/modules/36_employment/exo_may22/preloop.gms +++ b/modules/36_employment/exo_may22/preloop.gms @@ -50,7 +50,7 @@ pm_hourly_costs(t,i,"scenario") = sum(i_to_iso(i,iso), p36_hourly_costs_iso(t,is *' @code *' A scenario that increases wages can either be fully related to productivity increase (leading to lower employment *' for the same total labor costs), or keep productivity constant (leading to the same employment for higher total labor -*' costs), or to a mixture between productivity increase an total labor cost increase. +*' costs), or show a mixture between productivity increase and total labor cost increase. *' The scalar `s36_scale_productivity_with_wage` describes how high the labor productivity gain should be relative to *' the increase in hourly labor costs and is used to calculate `pm_productivity_gain_from_wages`, which is applied to *' labor costs for crop production ([38_factor_costs]), livestock production ([70_livestock]), and the non-MAgPIE diff --git a/modules/36_employment/exo_may22/presolve.gms b/modules/36_employment/exo_may22/presolve.gms index cd369f9017..5853a955fa 100644 --- a/modules/36_employment/exo_may22/presolve.gms +++ b/modules/36_employment/exo_may22/presolve.gms @@ -20,6 +20,6 @@ elseif (m_year(t)>=2010), *' categories not covered by MAgPIE (i.e. wool, beeswax, honey, silk-worms), which *' are both kept constant for future years. -p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * (1/pm_productivity_gain_from_wages(t,i)) * (pm_hourly_costs(t,i,"baseline") / pm_hourly_costs(t,i,"scenario")); +p36_nonmagpie_labor_costs(t,i) = (f36_unspecified_subsidies(t,i) + f36_nonmagpie_factor_costs(t,i)) * (1-p36_cost_share(t,i)) * (1/pm_productivity_gain_from_wages(t,i)) * (pm_hourly_costs(t,i,"scenario") / pm_hourly_costs(t,i,"baseline")); *' @stop diff --git a/modules/36_employment/exo_may22/realization.gms b/modules/36_employment/exo_may22/realization.gms index 78960892cf..fc1029a742 100644 --- a/modules/36_employment/exo_may22/realization.gms +++ b/modules/36_employment/exo_may22/realization.gms @@ -17,8 +17,11 @@ *' to labor costs which scale with the amount of production. Furthermore, *' hourly labor costs are projected into the future based on a regression with *' GDP pc, while factor requirements for crops (i.e. labor + capital costs per -*' production unit) are kept constant. This means, that any increase in wages -*' is assumed to be matched by a corresponding increase in labor productivity. +*' production unit) are kept constant. This means, that the increase in the +*' baseline wages over time is assumed to be matched by a corresponding increase +*' in labor productivity. For external wage scenarios that lead to higher wages +*' the additional wage increase can be either related to productivity increase +*' or higher total labor costs. *####################### R SECTION START (PHASES) ############################## diff --git a/modules/36_employment/module.gms b/modules/36_employment/module.gms index de5678793d..b5b1208a36 100644 --- a/modules/36_employment/module.gms +++ b/modules/36_employment/module.gms @@ -11,9 +11,9 @@ *' @description This module is used to calculate hourly labor costs in agriculutre *' and the number of people employed in crop and livestock production. *' Hourly labor costs are calculated based on a regression with GDP pc from [09_drivers]. -*' They can be increased by an externally set global minimum wage, and the module -*' provides a scaling factor for labor costs to [38_factor_costs] and [70_livestock], -*' to increase total labor costs according to the increase in hourly labor costs. +*' They can be increased by an externally set global minimum wage. Wages as well as +*' productivity gain from higher wages are provided to [38_factor_costs] and [70_livestock], +*' to scale total labor costs accordingly. *' The calculation of employment then uses labor costs for crop and livestock production *' coming from [38_factor_costs] and [70_livestock].