Skip to content

Commit

Permalink
Merge pull request #749 from flohump/f_npi
Browse files Browse the repository at this point in the history
option for NPI NDC reversal
  • Loading branch information
flohump authored Nov 20, 2024
2 parents 88fa677 + 863fe6d commit 7c8cb0f
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- **config** added SSP1-POP-GDP SSP2-POP-GDP and SSP5-POP-GDP
- **modules[29-35]** added initial values for ov_bv for better starting point
- **scripts** add mrdownscale script (0.5deg downscaling using LandUseInit as reference)
- **32_forestry** added option s32_npi_ndc_reversal
- **35_natveg** added option s35_npi_ndc_reversal

### removed
-
Expand Down
6 changes: 6 additions & 0 deletions config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,9 @@ cfg$gms$s32_aff_bii_coeff <- 0 # def = 0
# * ("ndc"): prescribed afforestation based on NPI+NDC policies
cfg$gms$c32_aff_policy <- "npi" # def = "npi"

# Year in which NPI NDC reversal should take place (e.g. 2025)
cfg$gms$s32_npi_ndc_reversal <- Inf # def = Inf

# Maximum total global afforestation in Mha (Inf = no constraint)
# Note 1: the limit applies to the sum of endogenous CO2 price driven and exogenous NPI/NDC afforestation
# Note 2: a limit of 0 or below the level of exogenous NPI/NDC afforestation will be a automatically raised to the level of exogenous NPI/NDC afforestation
Expand Down Expand Up @@ -1059,6 +1062,9 @@ cfg$gms$c35_ad_policy <- "npi" # def = "npi"
# * ("ndc"): avoided other land conversion based on NPI+NDC policies
cfg$gms$c35_aolc_policy <- "npi" # def = "npi"

# Year in which NPI NDC reversal should take place (e.g. 2025)
cfg$gms$s35_npi_ndc_reversal <- Inf # def = Inf

# Distribution of age-classes during secondary forest initialization
# * (0): All secondary forest belongs to highest age class
# * (1): Equal distribution of secondary forest in all age-classes
Expand Down
1 change: 1 addition & 0 deletions modules/32_forestry/dynamic_may24/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ parameters
p32_future_to_current_demand_ratio(t,i) Ratio of future and current timber demand (1)
p32_demand_forestry_future(t,i,kforestry) Future forestry demand in current time step (tDM per yr)
p32_est_cost(type32) Establishment cost (USD17MER per ha)
i32_recurring_cost(type32) Recurring costs (USD17MER per ha)
;

positive variables
Expand Down
2 changes: 1 addition & 1 deletion modules/32_forestry/dynamic_may24/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ q32_cost_establishment(i2)..
*' trees established for re/afforestation purposes.

q32_cost_recur(i2) .. v32_cost_recur(i2) =e=
sum((cell(i2,j2),type32,ac_sub), v32_land(j2,type32,ac_sub)) * s32_recurring_cost;
sum((cell(i2,j2),type32,ac_sub), v32_land(j2,type32,ac_sub) * i32_recurring_cost(type32));


**** Plantation establishment decision
Expand Down
1 change: 1 addition & 0 deletions modules/32_forestry/dynamic_may24/input.gms
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ scalars
s32_plant_contr_growth_endvalue End value for plantation contribution growth fader (percent per year) / 0 /
s32_plant_contr_max Maximum plantation contribution for establishment decision (percent) / 0.5 /
s32_demand_establishment Boolean switch for establishment demand assumption 1=forward looking 0=static (1) / 1 /
s32_npi_ndc_reversal Year in which NPI NDC reversal should take place (1) / Inf /
;

parameter f32_aff_mask(j) afforestation mask (binary)
Expand Down
3 changes: 2 additions & 1 deletion modules/32_forestry/dynamic_may24/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
*** | MAgPIE License Exception, version 1.0 (see LICENSE file).
*** | Contact: [email protected]

*m_sigmoid_time_interpol(i32_plant_contr_fader,2020,2050,0.05,0);
i32_recurring_cost(type32) = s32_recurring_cost;

m_sigmoid_time_interpol(i32_plant_contr_growth_fader,s32_plant_contr_growth_startyear,s32_plant_contr_growth_endyear,s32_plant_contr_growth_startvalue,s32_plant_contr_growth_endvalue);

p32_est_cost("plant") = s32_est_cost_plant;
Expand Down
7 changes: 7 additions & 0 deletions modules/32_forestry/dynamic_may24/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,13 @@ v32_land.fx(j,"ndc",ac_sub) = pc32_land(j,"ndc",ac_sub);
v32_land.lo(j,"ndc",ac_est) = 0;
v32_land.up(j,"ndc",ac_est) = Inf;

* release all bounds in case of NPI / NDC reversal and set recurring costs to zero
if (m_year(t) >= s35_npi_ndc_reversal,
v32_land.lo(j,"ndc",ac) = 0;
v32_land.up(j,"ndc",ac) = Inf;
i32_recurring_cost("ndc") = 0;
);

** fix c price induced afforestation based on s32_planing_horizon, fixed only until end of s32_planing_horizon, ac_est is free
if(s32_aff_prot = 0,
v32_land.fx(j,"aff",ac)$(ac.off <= s32_planing_horizon/5) = pc32_land(j,"aff",ac);
Expand Down
1 change: 1 addition & 0 deletions modules/35_natveg/pot_forest_may24/input.gms
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ s35_natveg_harvest_shr Constrains the allowed wood harvest from natural vegetati
s35_secdf_distribution Flag for secdf initialization (0=all secondary forest in highest age class 1=Equal distribution among all age classes 2=Poulter distribution from MODIS satellite data) (1) / 2 /
s35_forest_damage Damage simulation in forests (0=none 1=shifting agriculture 2= Damage from shifting agriculture is faded out by c35_forest_damage_end 4= f35_forest_shock scenario) / 2 /
s35_forest_damage_end Year of forest damage end (1) / 2050 /
s35_npi_ndc_reversal Year in which NPI NDC reversal should take place (1) / Inf /
;

table f35_forest_lost_share(i,driver_source) Share of area damanged by forest fires (1)
Expand Down
6 changes: 6 additions & 0 deletions modules/35_natveg/pot_forest_may24/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,12 @@ p35_min_forest(t,j)$(p35_min_forest(t,j) > pcm_land(j,"primforest") + pcm_land(j
= pcm_land(j,"primforest") + pcm_land(j,"secdforest") + pcm_land(j,"forestry");
p35_min_other(t,j)$(p35_min_other(t,j) > pcm_land(j,"other")) = pcm_land(j,"other");

* NPI / NDC reversal
if (m_year(t) >= s35_npi_ndc_reversal,
p35_min_forest(t,j) = 0;
p35_min_other(t,j) = 0;
);

** Youngest age classes are not allowed to be harvested
v35_hvarea_secdforest.fx(j,ac_est) = 0;
v35_hvarea_other.fx(j,othertype35,ac_est) = 0;
Expand Down

0 comments on commit 7c8cb0f

Please sign in to comment.