Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New forest recovery based on potential forest area #676

Merged
merged 43 commits into from
May 28, 2024
Merged
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
dd0cc68
new forest recovery based on potential forest area
pvjeetze Apr 25, 2024
3d69a6b
new forest recovery based on potential forest area
pvjeetze Apr 25, 2024
60c6343
Merge branch 'develop' of https://github.com/magpiemodel/magpie into …
pvjeetze Apr 25, 2024
02d5cf5
adjusted p35_forest_min
pvjeetze Apr 25, 2024
364f7ab
max forest restoration fixes
pvjeetze Apr 29, 2024
952c15c
bugfix
pvjeetze Apr 29, 2024
77cba28
fixes for forest damage and regeneration
pvjeetze Apr 30, 2024
55a8125
removed ndc forestry conflict
pvjeetze May 2, 2024
fcc0f4a
use carbon density of other land where forest potential is zero
pvjeetze May 2, 2024
21fedf2
new realisation name
pvjeetze May 2, 2024
fd50ef4
reworked forest regeneration
pvjeetze May 3, 2024
ff4ec9a
fixes
pvjeetze May 3, 2024
ab85d32
land_agfo set not needed
pvjeetze May 3, 2024
1942a8f
reworked forest recovery equations
pvjeetze May 9, 2024
79d9e72
separated forest establishment and secondary forest recovery equations
pvjeetze May 13, 2024
d69aa50
minor adjustment
pvjeetze May 13, 2024
0eeddcb
further adjustments
pvjeetze May 13, 2024
0e1cbb4
resovled merge conflicts
pvjeetze May 16, 2024
7ff33c0
resovled merge conflicts
pvjeetze May 16, 2024
ebc6ad5
Merge branch 'f_WDPABaselineSplit' of https://github.com/pvjeetze/mag…
pvjeetze May 16, 2024
1e79ca8
reworked 35_natveg presolve regarding potential forest area
pvjeetze May 16, 2024
6913e0f
separate carbon densities for forest and other land
pvjeetze May 16, 2024
e590de8
reverted renaming of forestry and natveg module
pvjeetze May 17, 2024
93b6228
resolved merge conflict
pvjeetze May 17, 2024
9b0df5f
rework of forest establishment potential
pvjeetze May 17, 2024
7395c9a
bugfix
pvjeetze May 17, 2024
41250ca
forest establishment bound fix
pvjeetze May 17, 2024
2e28b4a
slight renaming
pvjeetze May 18, 2024
26acf5a
slight renaming
pvjeetze May 18, 2024
19d74d5
resolved merge conflicts
pvjeetze May 22, 2024
625a369
changelog
pvjeetze May 22, 2024
f7efd46
typos
pvjeetze May 22, 2024
5210068
addressed review comments
pvjeetze May 23, 2024
390afbd
minor streamlining of code
pvjeetze May 23, 2024
caa8ec0
reverted main.gms download paths
pvjeetze May 23, 2024
9e5ffd1
carbon density fix
pvjeetze May 23, 2024
9580188
added interface vm_land_other to facilitate emissions calculations
pvjeetze May 24, 2024
a48cf60
not used fix
pvjeetze May 24, 2024
8c8ee29
other land bound fix
pvjeetze May 24, 2024
1cfad9d
reodered dimensions of new parameters and variables in line with modu…
pvjeetze May 27, 2024
43d3496
redefined p35_forest_recovery_area to improve reporting
pvjeetze May 27, 2024
74fd1a8
parameter not needed
pvjeetze May 27, 2024
b846b24
max forest recovery fix
pvjeetze May 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- **default.cfg** changed default realization for 44_biodiversity to new realization `bii_target_apr24`
- **80_optimization** Simplifed cycling through CONOPT4, CONOPT4 with OPTFILE, CONOPT4 without preprocessing and CONOPT3.
- **scripts** start/test_runs.R added 2 more test runs from FSEC
- **32_forestry** revision and simplification of forestry implementation, renamed realization from `dynamic_feb21` to `dynamic_may24`.
- **32_forestry** revision and simplification of forestry implementation, renamed realization from `dynamic_feb21` to `dynamic_may24`.
- **32_forestry** renamed interface `pm_demand_ext` to `pm_demand_forestry`
- **default.cfg** Forestry sector included by default by using the `ForestryEndo` settings from `scenario_config.csv`: `s32_initial_distribution = 1`, `s32_demand_establishment = 1`, `s32_hvarea = 2`, `s35_secdf_distribution = 2`, `s35_hvarea = 2`, `s73_timber_demand_switch = 1`
- **14_yields** revised timber yield calculations
- **35_natveg** `vm_land(j2,"forestry")` included in NPI/NDC constraint `q35_min_forest`
- **35_natveg** replaced the realisation `dynamic_feb21` with realisation `pot_forest_may24`. The new realisation provides additional information on the potential forest area, which is now used to constrain forest and forestry expansion and recovery. The remaining area for forest establishment is provided to the forestry module via the new interface parameter `pcm_max_forest_est`.
- **52_carbon** Separate carbon densities for forest and other land. Before there was only a single carbon density for natural vegetation land.

### added
- **default.cfg** added cropland growth constraint `cfg$gms$s30_annual_max_growth`
Expand Down
4 changes: 2 additions & 2 deletions config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -930,8 +930,8 @@ 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
cfg$gms$natveg <- "dynamic_feb21" # def = dynamic_feb21
# * (pot_forest_may24): Dynamic natural vegetation land with detailed age-classes
cfg$gms$natveg <- "pot_forest_may24" # def = pot_forest_may24

# Avoided Deforestation policy
# * ("none"): no avoided deforestation
Expand Down
4 changes: 2 additions & 2 deletions core/macros.gms
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,12 @@ $macro m_linear_cell_data_interpol(output,x,input_x1,input_x2,input_y1,input_y2)
* macro for simple carbon stocks
$macro m_carbon_stock(land,carbon_density,item) \
(land(j2,item) * sum(ct,carbon_density(ct,j2,item,ag_pools)))$(sameas(stockType,"actual")) + \
(land(j2,item) * sum(ct,carbon_density(ct,j2,item,ag_pools)))$(sameas(stockType,"actualNoAcEst"));
(land(j2,item) * sum(ct,carbon_density(ct,j2,item,ag_pools)))$(sameas(stockType,"actualNoAcEst"))

* macro for carbon stocks with age classes
$macro m_carbon_stock_ac(land,carbon_density,sets,sets_sub) \
sum((&&sets), land(j2,&&sets) * sum(ct, carbon_density(ct,j2,&&sets,ag_pools)))$(sameas(stockType,"actual")) + \
sum((&&sets_sub), land(j2,&&sets_sub) * sum(ct, carbon_density(ct,j2,&&sets_sub,ag_pools)))$(sameas(stockType,"actualNoAcEst"));
sum((&&sets_sub), land(j2,&&sets_sub) * sum(ct, carbon_density(ct,j2,&&sets_sub,ag_pools)))$(sameas(stockType,"actualNoAcEst"))

* macros for peatland module
$macro m58_LandMerge(land,landForestry,set) \
Expand Down
15 changes: 9 additions & 6 deletions core/sets.gms
Original file line number Diff line number Diff line change
Expand Up @@ -242,20 +242,23 @@ sets
wat_dem Water demand sectors / agriculture, domestic, manufacturing, electricity, ecosystem /

***LAND POOLS***
land Land pools
land Land pools
/ crop, past, forestry, primforest, secdforest, urban, other /

land_ag(land) Agricultural land pools
/ crop, past /
/ crop, past /

forest_land(land) land from which timber can be taken away
/ forestry, primforest, secdforest,other /
land_timber(land) land from which timber can be taken away
/ forestry, primforest, secdforest, other /

land_natveg(forest_land) Natural vegetation land pools
land_forest(land_timber) Forested land pools
/ forestry, primforest, secdforest /

land_natveg(land_timber) Natural vegetation land pools
/ primforest, secdforest, other /

forest_type forest type
/ plantations, natveg /
/ plantations, natveg /

***Forestry**
ac Age classes / ac0,ac5,ac10,ac15,ac20,ac25,ac30,ac35,ac40,ac45,ac50,
Expand Down
2 changes: 1 addition & 1 deletion main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ $setglobal past endo_jun13
$setglobal forestry dynamic_may24

$setglobal urban exo_nov21
$setglobal natveg dynamic_feb21
$setglobal natveg pot_forest_may24

$setglobal employment exo_may22
$setglobal labor_prod off
Expand Down
2 changes: 1 addition & 1 deletion modules/14_yields/managementcalib_aug19/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ parameters
i14_fao_yields_hist(t,i,kcr) FAO yields per region at the historical referende year (tDM per ha per yr)
i14_lambda_yields(t,i,kcr) Scaling factor for non-linear management calibration (1)
i14_managementcalib(t,j,kcr,w) Regional management calibration factor accounting for FAO yield levels (1)
pm_timber_yield(t,j,ac,forest_land) Forest growing stock (tDM per ha per yr)
pm_timber_yield(t,j,ac,land_timber) Forest growing stock (tDM per ha per yr)
pm_yields_semi_calib(j,kve,w) Potential yields calibrated to FAO regional levels (tDM per ha per yr)
i14_calib_yields_hist(i,w) Calibrated yields average over region and crop type at the historical reference year (tDM per ha per yr)
i14_calib_yields_ratio(i) Irrigated to rainfed yield ratio for calibrated yields (1)
Expand Down
2 changes: 1 addition & 1 deletion modules/14_yields/managementcalib_aug19/input.gms
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ $include "./modules/14_yields/input/f14_ipcc_bce.cs3"
$offdelim
;

parameter f14_aboveground_fraction(forest_land) Root to shoot ratio (1)
parameter f14_aboveground_fraction(land_timber) Root to shoot ratio (1)
/
$ondelim
$include "./modules/14_yields/input/f14_aboveground_fraction.csv"
Expand Down
6 changes: 3 additions & 3 deletions modules/14_yields/managementcalib_aug19/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,11 @@ if ((s14_calib_ir2rf = 1),
*' @code
*' Calibrated yields can additionally be adjusted by calibration factors 'f14_yld_calib'
*' determined in a calibration run. As MAgPIE optimizes yield patterns and FAO regional
*' yields are outlier corrected, historical production and croparea can in some cases
*' yields are outlier corrected, historical production and croparea can in some cases
*' be better represented with this additional correction:

* set yield calib factors to 1 in case of no use of yield calibration factors (s14_use_yield_calib = 0)
* or missing input file
* set yield calib factors to 1 in case of no use of yield calibration factors (s14_use_yield_calib = 0)
* or missing input file
if(s14_use_yield_calib = 0 OR sum((i,ltype14),f14_yld_calib(i,ltype14)) = 0,
f14_yld_calib(i,ltype14) = 1;
);
Expand Down
21 changes: 15 additions & 6 deletions modules/14_yields/managementcalib_aug19/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

*** YIELDS

*` `pm_carbon_density_ac_forestry` for vegetation Carbon is above- and belowground
*` `pm_carbon_density_plantation_ac` for vegetation Carbon is above- and belowground
*' carbon density. We convert Carbon density in tC/ha to tDM/ha by using carbon
*' fraction of `s14_carbon_fraction` in tC/tDM. For assessing wood harvesting
*' we need only aboveground biomass information, therefore we multiply with
Expand All @@ -23,25 +23,34 @@

pm_timber_yield(t,j,ac,"forestry") =
(
pm_carbon_density_ac_forestry(t,j,ac,"vegc")
pm_carbon_density_plantation_ac(t,j,ac,"vegc")
/ s14_carbon_fraction
* f14_aboveground_fraction("forestry")
/ sum(clcl, pm_climate_class(j,clcl) * f14_ipcc_bce(clcl,"plantations"))
)
;

pm_timber_yield(t,j,ac,land_natveg) =
pm_timber_yield(t,j,ac,land_forest) =
(
pm_carbon_density_ac(t,j,ac,"vegc")
pm_carbon_density_secdforest_ac(t,j,ac,"vegc")
/ s14_carbon_fraction
* f14_aboveground_fraction(land_natveg)
* f14_aboveground_fraction(land_forest)
/ sum(clcl, pm_climate_class(j,clcl) * f14_ipcc_bce(clcl,"natveg"))
)
;

pm_timber_yield(t,j,ac,"other") =
(
pm_carbon_density_other_ac(t,j,ac,"vegc")
/ s14_carbon_fraction
* f14_aboveground_fraction("other")
/ sum(clcl, pm_climate_class(j,clcl) * f14_ipcc_bce(clcl,"natveg"))
)
;

*` @stop

** Hard constraint to always have a positive number in pm_timber_yield
pm_timber_yield(t,j,ac,forest_land) = pm_timber_yield(t,j,ac,forest_land)$(pm_timber_yield(t,j,ac,forest_land) > 0) + 0.0001$(pm_timber_yield(t,j,ac,forest_land) = 0);
pm_timber_yield(t,j,ac,land_timber) = pm_timber_yield(t,j,ac,land_timber)$(pm_timber_yield(t,j,ac,land_timber) > 0) + 0.0001$(pm_timber_yield(t,j,ac,land_timber) = 0);
** Put yields to 0 where they dont exceed a minimum yield for harvest
pm_timber_yield(t,j,ac,land_natveg)$(pm_timber_yield(t,j,ac,land_natveg) < s14_minimum_wood_yield) = 0;
4 changes: 2 additions & 2 deletions modules/22_land_conservation/area_based_apr22/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ pm_land_conservation(t,j,"secdforest","restore")$(pm_land_conservation(t,j,"secd
* Grassland restoration is limited by grassland restoration potential
p22_past_restore_pot(t,j) = sum(land, pcm_land(j, land))
- pcm_land(j, "urban")
- sum(forest_land, pcm_land(j, forest_land))
- sum(land_timber, pcm_land(j, land_timber))
- pm_land_conservation(t,j,"past","protect")
- pm_land_conservation(t,j,"secdforest","restore");
p22_past_restore_pot(t,j)$(p22_past_restore_pot(t,j) < 0) = 0;
Expand All @@ -97,7 +97,7 @@ pm_land_conservation(t,j,"past","restore")$(pm_land_conservation(t,j,"past","res
* Other land restoration is limited by other land restoration potential
p22_other_restore_pot(t,j) = sum(land, pcm_land(j, land))
- pcm_land(j, "urban")
- sum(forest_land, pcm_land(j, forest_land))
- sum(land_timber, pcm_land(j, land_timber))
- sum(consv_type, pm_land_conservation(t,j,"past",consv_type))
- pm_land_conservation(t,j,"secdforest","restore");
p22_other_restore_pot(t,j)$(p22_other_restore_pot(t,j) < 0) = 0;
Expand Down
20 changes: 10 additions & 10 deletions modules/32_forestry/dynamic_may24/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,17 @@ sum(ac_est, v32_land(j2,"aff",ac_est)) =l= sum(ac, v32_land(j2,"aff",ac)) - sum(
q32_aff_pol(j2) ..
sum(ac_est, v32_land(j2,"ndc",ac_est)) + v32_land_missing_ndc(j2) =e= sum(ct, p32_aff_pol_timestep(ct,j2));

*' The constraint `q32_max_aff` accounts for the allowed maximum global endogenous
*' afforestation defined in `i32_max_aff_area_glo`.
*' The constraint `q32_max_aff_reg` accounts for the allowed maximum regional endogenous
*' afforestation defined in `i32_max_aff_area_reg`.
*' The constraint `q32_max_aff` accounts for the allowed maximum global endogenous
*' afforestation defined in `i32_max_aff_area_glo`.
*' The constraint `q32_max_aff_reg` accounts for the allowed maximum regional endogenous
*' afforestation defined in `i32_max_aff_area_reg`.
*' Only one of the two constraints is active, depending on `s32_max_aff_area_glo`.

q32_max_aff$(s32_max_aff_area_glo=1) ..
q32_max_aff$(s32_max_aff_area_glo=1) ..
sum((j2,ac), v32_land(j2,"aff",ac))
=l= sum(ct, i32_max_aff_area_glo(ct));

q32_max_aff_reg(i2)$(s32_max_aff_area_glo=0) ..
q32_max_aff_reg(i2)$(s32_max_aff_area_glo=0) ..
sum((cell(i2,j2),ac), v32_land(j2,"aff",ac))
=l= sum(ct, i32_max_aff_area_reg(ct,i2));

Expand All @@ -100,7 +100,7 @@ sum(ac_est, v32_land(j2,"aff",ac_est)) =l= sum(ac, v32_land(j2,"aff",ac)) - sum(
+ sum(ac_sub, v32_land_reduction(j2,type32,ac_sub)));

q32_land_expansion(j2,type32) ..
v32_land_expansion(j2,type32) =e=
v32_land_expansion(j2,type32) =e=
sum(ac_est, v32_land(j2,type32,ac_est));

q32_land_reduction(j2,type32,ac_sub) ..
Expand All @@ -112,17 +112,17 @@ sum(ac_est, v32_land(j2,"aff",ac_est)) =l= sum(ac, v32_land(j2,"aff",ac)) - sum(

q32_bv_aff(j2,potnatveg) .. vm_bv(j2,"aff_co2p",potnatveg)
=e=
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"aff",ac)) *
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"aff",ac)) *
p32_bii_coeff("aff",bii_class_secd,potnatveg)) * fm_luh2_side_layers(j2,potnatveg);

q32_bv_ndc(j2,potnatveg) .. vm_bv(j2,"aff_ndc",potnatveg)
=e=
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"ndc",ac)) *
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"ndc",ac)) *
p32_bii_coeff("ndc",bii_class_secd,potnatveg)) * fm_luh2_side_layers(j2,potnatveg);

q32_bv_plant(j2,potnatveg) .. vm_bv(j2,"plant",potnatveg)
=e=
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"plant",ac)) *
sum(bii_class_secd, sum(ac_to_bii_class_secd(ac,bii_class_secd), v32_land(j2,"plant",ac)) *
p32_bii_coeff("plant",bii_class_secd,potnatveg)) * fm_luh2_side_layers(j2,potnatveg);


Expand Down
6 changes: 3 additions & 3 deletions modules/32_forestry/dynamic_may24/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
*m_sigmoid_time_interpol(i32_plant_contr_fader,2020,2050,0.05,0);
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;
p32_est_cost("plant") = s32_est_cost_plant;
p32_est_cost("ndc") = s32_est_cost_natveg;
p32_est_cost("aff") = s32_est_cost_natveg$(s32_aff_plantation = 0) + s32_est_cost_plant$(s32_aff_plantation = 1);

** Calculation of Single rotation model rotation lengths
** Using forestry carbon densitiy here via carbon density data exchange from carbon module.
p32_carbon_density_ac_forestry(t_all,j,ac) = pm_carbon_density_ac_forestry(t_all,j,ac,"vegc");
p32_carbon_density_ac_forestry(t_all,j,ac) = pm_carbon_density_plantation_ac(t_all,j,ac,"vegc");

** Calculating the marginal of carbon density i.e. change in carbon density over two time steps
** The carbon densities are tC/ha/year so we don't have to divide by timestep length.
Expand Down Expand Up @@ -52,7 +52,7 @@ $ifthen "%c32_rot_calc_type%" == "current_annual_increment"
$endif

$ifthen "%c32_rot_calc_type%" == "mean_annual_increment"
p32_avg_increment(t_all,j,ac) = pm_carbon_density_ac_forestry(t_all,j,ac,"vegc") / ((ord(ac)+1)*5);
p32_avg_increment(t_all,j,ac) = pm_carbon_density_plantation_ac(t_all,j,ac,"vegc") / ((ord(ac)+1)*5);
p32_rot_flg(t_all,j,ac) = 1$(p32_carbon_density_ac_marg(t_all,j,ac) - p32_avg_increment(t_all,j,ac) > 0)
+ 0$(p32_carbon_density_ac_marg(t_all,j,ac) - p32_avg_increment(t_all,j,ac) <= 0);
display "Rotation lengths are calculated based on maximizing mean annual increment in this run.";
Expand Down
17 changes: 9 additions & 8 deletions modules/32_forestry/dynamic_may24/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,29 @@ v32_land_reduction.fx(j,type32,ac_est) = 0;
p32_aff_pol_timestep(t,j)$(ord(t)>1) = p32_aff_pol(t,j) - p32_aff_pol(t-1,j);
* Suitable area (`p32_aff_pot`) for NPI/NDC afforestation
p32_aff_pot(t,j) = sum((kcr,w),vm_area.l(j,kcr,w) - vm_area.lo(j,kcr,w)) + (vm_land.l(j,"past") - vm_land.lo(j,"past")) - pm_land_conservation(t,j,"other","restore");
*** NDC/NPI re/afforesation is further constrained by the remaining forest establishment potential
p32_aff_pot(t,j)$(p32_aff_pot(t,j) > pcm_max_forest_est(j)) = pcm_max_forest_est(j);
* suitable area `p32_aff_pot` can be negative, if land restoration is switched on (level smaller than lower bound), therefore set negative values to 0
p32_aff_pot(t,j)$(p32_aff_pot(t,j) < 0) = 0;
* Limit prescribed NPI/NDC afforestation in `p32_aff_pol_timestep` if not enough suitable area (`p32_aff_pot`) for afforestation is available
p32_aff_pol_timestep(t,j)$(p32_aff_pol_timestep(t,j) > p32_aff_pot(t,j)) = p32_aff_pot(t,j);
** END ndc **

*' @code

*' Afforestation switch:
*' 0 = Use natveg growth curve towards LPJmL natural vegetation
*' 1 = Use plantation growth curve (faster than natveg) towards LPJmL natural vegetation
if(s32_aff_plantation = 0,
p32_carbon_density_ac(t,j,"aff",ac,ag_pools) = pm_carbon_density_ac(t,j,ac,ag_pools);
p32_carbon_density_ac(t,j,"aff",ac,ag_pools) = pm_carbon_density_secdforest_ac(t,j,ac,ag_pools);
elseif s32_aff_plantation = 1,
p32_carbon_density_ac(t,j,"aff",ac,ag_pools) = pm_carbon_density_ac_forestry(t,j,ac,"vegc");
p32_carbon_density_ac(t,j,"aff",ac,ag_pools) = pm_carbon_density_plantation_ac(t,j,ac,"vegc");
);

*' Timber plantations carbon densities:
p32_carbon_density_ac(t,j,"plant",ac,ag_pools) = pm_carbon_density_ac_forestry(t,j,ac,ag_pools);
p32_carbon_density_ac(t,j,"plant",ac,ag_pools) = pm_carbon_density_plantation_ac(t,j,ac,ag_pools);

*' NDC carbon densities are natveg carbon densities.
p32_carbon_density_ac(t,j,"ndc",ac,ag_pools) = pm_carbon_density_ac(t,j,ac,ag_pools);
p32_carbon_density_ac(t,j,"ndc",ac,ag_pools) = pm_carbon_density_secdforest_ac(t,j,ac,ag_pools);

*' CDR from afforestation for each age-class, depending on planning horizon.
p32_cdr_ac(t,j,ac)$(ord(ac) > 1 AND (ord(ac)-1) <= s32_planing_horizon/5)
Expand Down Expand Up @@ -139,7 +140,7 @@ if(s32_aff_prot = 0,
v32_land.fx(j,"aff",ac)$(ac.off <= s32_planing_horizon/5) = pc32_land(j,"aff",ac);
v32_land.up(j,"aff",ac)$(ac.off > s32_planing_horizon/5) = pc32_land(j,"aff",ac);
elseif s32_aff_prot = 1,
v32_land.fx(j,"aff",ac) = pc32_land(j,"aff",ac);
v32_land.fx(j,"aff",ac) = pc32_land(j,"aff",ac);
);
v32_land.lo(j,"aff",ac_est) = 0;
v32_land.up(j,"aff",ac_est) = Inf;
Expand Down Expand Up @@ -171,7 +172,7 @@ if(ord(t) = 1,
else
p32_plant_contr(t,i) = p32_plant_contr(t-1,i) * (1+i32_plant_contr_growth_fader(t))**m_timestep_length_forestry;
);
p32_plant_contr(t,i)$(p32_plant_contr(t,i) > s32_plant_contr_max) = s32_plant_contr_max;
p32_plant_contr(t,i)$(p32_plant_contr(t,i) > s32_plant_contr_max) = s32_plant_contr_max;

** demand for establishment decision depends on s32_demand_establishment:
** s32_demand_establishment = 0 static (establishment based on current demand)
Expand All @@ -183,7 +184,7 @@ if(s32_demand_establishment = 1,
p32_demand_forestry_future(t,i,kforestry) = sum(t_ext$(t_ext.pos = t.pos + p32_rotation_regional(t,i)),pm_demand_forestry(t_ext,i,kforestry));
);
else
p32_demand_forestry_future(t,i,kforestry) = pm_demand_forestry(t,i,kforestry);
p32_demand_forestry_future(t,i,kforestry) = pm_demand_forestry(t,i,kforestry);
);

p32_forestry_product_dist(t,i,kforestry)$(p32_demand_forestry_future(t,i,kforestry) > 0) = p32_demand_forestry_future(t,i,kforestry) / sum(kforestry2, p32_demand_forestry_future(t,i,kforestry2));
Expand Down
2 changes: 2 additions & 0 deletions modules/35_natveg/input/files
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ npi_ndc_ad_aolc_pol.cs3
f35_forest_disturbance_share.cs4
f35_forest_lost_share.cs3
f35_forest_shock.csv
pot_forest_area.cs3
pot_forest_area_0.5.mz
2 changes: 1 addition & 1 deletion modules/35_natveg/module.gms
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
*' @authors Florian Humpenöder, Abhijeet Mishra, Patrick v. Jeetze

*###################### R SECTION START (MODULETYPES) ##########################
$Ifi "%natveg%" == "dynamic_feb21" $include "./modules/35_natveg/dynamic_feb21/realization.gms"
$Ifi "%natveg%" == "pot_forest_may24" $include "./modules/35_natveg/pot_forest_may24/realization.gms"
*###################### R SECTION END (MODULETYPES) ############################
Loading
Loading