Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
[[#2332](https://github.com/remindmodel/remind/pull/2332)]
- **scripts** Use `quitte::write.gdx` in `climateAssessmentInterimRun.R` to dump climate assessment results to gdx
[[#2334](https://github.com/remindmodel/remind/pull/2354)]
- **inputdata** Split final energy demands into buildings and industry specific parameters
[[#2329](https://github.com/remindmodel/remind/pull/2329/)]

### added
-
Expand Down
2 changes: 1 addition & 1 deletion config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv"
cfg$extramappings_historic <- ""

#### Current input data revision (<mainrevision>.<subrevision>) ####
cfg$inputRevision <- "7.91"
cfg$inputRevision <- "7.90fedem"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we use an input data rev. number which has no extention?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, once this is approved, I will make a new input data version without the dev extension


#### Current CES parameter and GDX revision (commit hash) ####
cfg$CESandGDXversion <- "a12b6355e0ac96081f79504465c61e68fd14ed48"
Expand Down
32 changes: 14 additions & 18 deletions core/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1635,41 +1635,37 @@ loop(te,


*** ---- FE demand trajectories for calibration -------------------------------
*** also used for limiting secondary steel demand in baseline and policy
*** scenarios

Parameter
f_fedemand(tall,all_regi,all_demScen,all_in) "final energy demand"
f_fedemandInd(tall,all_regi,all_demScen,all_in) "final energy demand in industry"
/
$ondelim
$include "./core/input/f_fedemand.cs4r"
$include "./core/input/f_fedemand_ind.cs4r"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same name for the parameter and the file would be bestter, always f_fedemandInd

$offdelim
/;

*** use cm_demScen for Industry and Buildings
*** cm_GDPpopScen will be used for Transport (EDGE-T) (see p29_trpdemand)
pm_fedemand(tall,all_regi,in) = f_fedemand(tall,all_regi,"%cm_demScen%",in);
*** data input for industry FE that is no part of the CES tree
pm_fedemand(tall,all_regi,ppfen_no_ces_use) = f_fedemand(tall,all_regi,"%cm_demScen%",ppfen_no_ces_use);
pm_fedemandInd(t,regi,in) = f_fedemandInd(t,regi,"%cm_demScen%",in);
*** data input for industry FE that is no part of the CES tree
*** needed for process-based steel implementation, where these items are not part of "in"
pm_fedemandInd(t,regi,ppfen_no_ces_use) = f_fedemandInd(t,regi,"%cm_demScen%",ppfen_no_ces_use);
Comment thread
fbenke-pik marked this conversation as resolved.
Comment thread
fbenke-pik marked this conversation as resolved.

*** RCP-dependent demands in buildings (climate impact)
$ifthen.cm_rcp_scen_build not "%cm_rcp_scen_build%" == "none"
Parameter f_fedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "RCP-dependent final energy demand in buildings"
Parameter
f_fedemandBuild(tall,all_regi,all_demScen,all_rcp_scen,all_in) "RCP-dependent final energy demand in buildings"
/
$ondelim
$include "./core/input/f_fedemand_build.cs4r"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same names for the parameter and the files would be better

$offdelim
/;


pm_fedemand(t,regi,cal_ppf_buildings_dyn36) = f_fedemand_build(t,regi,"%cm_demScen%","%cm_rcp_scen_build%",cal_ppf_buildings_dyn36);
$endif.cm_rcp_scen_build

pm_fedemandBuild(t,regi,cal_ppf_buildings_dyn36) = f_fedemandBuild(t,regi,"%cm_demScen%","%cm_rcp_scen_build%",cal_ppf_buildings_dyn36);

*** Scale FE demand across industry and building sectors
$ifthen.scaleDemand not "%cm_scaleDemand%" == "off"
loop((tall,tall2,all_regi) $ pm_scaleDemand(tall,tall2,all_regi),
*FL* rescaled demand = normal demand * [ scaling factor + (1-scaling factor) * remaining phase-in, between zero and one ]
pm_fedemand(t,all_regi,all_in) = pm_fedemand(t,all_regi,all_in) * ( pm_scaleDemand(tall,tall2,all_regi) + (1-pm_scaleDemand(tall,tall2,all_regi)) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) );
pm_fedemandInd(t,all_regi,all_in) = pm_fedemandInd(t,all_regi,all_in) * ( pm_scaleDemand(tall,tall2,all_regi) + (1-pm_scaleDemand(tall,tall2,all_regi)) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) );
pm_fedemandBuild(t,all_regi,all_in) = pm_fedemandBuild(t,all_regi,all_in) * ( pm_scaleDemand(tall,tall2,all_regi) + (1-pm_scaleDemand(tall,tall2,all_regi)) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) );
);
$endif.scaleDemand

Expand All @@ -1695,7 +1691,7 @@ pm_scaleDemandBuildTable(t,regi) $ ( pm_scaleDemandBuildTable(t,regi) le 0) = 1;
pm_scaleDemandBuildTable(t,regi) $ (t.val > 2100 ) = pm_scaleDemandBuildTable("2100",regi); !! continue 2100 multiplier until end of time

loop( (t,regi,in) $ in_buildings_dyn36(in) ,
pm_fedemand(t,regi,in) = pm_fedemand(t,regi,in) * pm_scaleDemandBuildTable(t,regi)
pm_fedemandBuild(t,regi,in) = pm_fedemandBuild(t,regi,in) * pm_scaleDemandBuildTable(t,regi)
);
$endif.scaleDemandBuildTable

Expand All @@ -1720,7 +1716,7 @@ p_scaleDemandIndTable(t,regi) $ ( p_scaleDemandIndTable(t,regi) le 0) = 1; !! I
p_scaleDemandIndTable(t,regi) $ (t.val > 2100 ) = p_scaleDemandIndTable("2100",regi); !! continue 2100 multiplier until end of time

loop( (t,regi,in) $ in_industry_dyn37(in) ,
pm_fedemand(t,regi,in) = pm_fedemand(t,regi,in) * p_scaleDemandIndTable(t,regi)
pm_fedemandInd(t,regi,in) = pm_fedemandInd(t,regi,in) * p_scaleDemandIndTable(t,regi)
);
$endif.scaleDemandIndTable

Expand Down
3 changes: 2 additions & 1 deletion core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ p_co2CCSReference(ttot,all_regi,all_enty,all_enty,all_te,rlf) "Captured CO2 put
p_prodAllReference(ttot,all_regi,all_te) "Sum of the above in the reference run. As each technology has only one type of output, the differing units should not be a problem"

*** CES calibration tarjectories industry and buildings
pm_fedemand(tall,all_regi,all_in) "read-in parameter for final energy and production trajectories used for the CES parameter calibration in industry and buildings [TWa]"
pm_fedemandInd(tall,all_regi,all_in) "read-in parameter for final energy and production trajectories used for the CES parameter calibration in industry [EJ, ue_primary_steel, ue_secondary_steel: Gt, ue_otherInd: $tn]"
pm_fedemandBuild(tall,all_regi,all_in) "read-in parameter for final energy and production trajectories used for the CES parameter calibration in buildings [EJ]"

*** parameters for setting final energy shares
pm_shfe_up(ttot,all_regi,all_enty,emi_sectors) "Final energy shares exogenous upper bounds per sector [share]"
Expand Down
2 changes: 1 addition & 1 deletion core/input/files
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ p_boundCapCCS.cs4r
p_CapacityBounds.cs4r
p_boundCapBiochar.cs4r
f_geoStorPot.cs3r
f_fedemand.cs4r
f_fedemand_build.cs4r
f_fedemand_ind.cs4r
pm_NuclearConstraint.cs4r
pm_risk_premium.cs4r
pm_shPPPMER.cs4r
Expand Down
2 changes: 0 additions & 2 deletions core/loop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,9 @@ option solprint = off;
o_modelstat = 100;

$ifthen.calibrate "%CES_parameters%" == "calibrate" !! CES_parameters
$ifthen.subsectors "%industry%" == "subsectors" !! industry
!! Calibrating industry/subsectors lead to random infeasibilities on the order
!! of 1e-15. Relaxing this attribute a little solves this problem.
hybrid.tolinfeas = 1e-14;
$endif.subsectors
$endif.calibrate

***-------------------------------------------------------------------
Expand Down
58 changes: 29 additions & 29 deletions modules/04_PE_FE_parameters/iea2014/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,12 @@ p04_IO_output_beforeFix_Total(t,regi,"fehob") = p04_IO_output_beforeFix(t,regi,"
+ p04_IO_output_beforeFix(t,regi,"seliqfos","fehob","tdfoshob");

*** adjust buildings solids
f04_IO_output("2005",regi,"sesobio","fesob","tdbiosob")$(p04_IO_output_beforeFix_Total("2005",regi,"fesob")) = p04_IO_output_beforeFix("2005",regi,"sesobio","fesob","tdbiosob") * pm_fedemand("2005",regi,"fesob")/p04_IO_output_beforeFix_Total("2005",regi,"fesob");
f04_IO_output("2005",regi,"sesofos","fesob","tdfossob")$(p04_IO_output_beforeFix_Total("2005",regi,"fesob")) = p04_IO_output_beforeFix("2005",regi,"sesofos","fesob","tdfossob") * pm_fedemand("2005",regi,"fesob")/p04_IO_output_beforeFix_Total("2005",regi,"fesob");
f04_IO_output("2005",regi,"sesobio","fesob","tdbiosob")$(p04_IO_output_beforeFix_Total("2005",regi,"fesob")) = p04_IO_output_beforeFix("2005",regi,"sesobio","fesob","tdbiosob") * pm_fedemandBuild("2005",regi,"fesob")/p04_IO_output_beforeFix_Total("2005",regi,"fesob");
f04_IO_output("2005",regi,"sesofos","fesob","tdfossob")$(p04_IO_output_beforeFix_Total("2005",regi,"fesob")) = p04_IO_output_beforeFix("2005",regi,"sesofos","fesob","tdfossob") * pm_fedemandBuild("2005",regi,"fesob")/p04_IO_output_beforeFix_Total("2005",regi,"fesob");

*** adjust buildings liquids
f04_IO_output("2005",regi,"seliqbio","fehob","tdbiohob")$(p04_IO_output_beforeFix_Total("2005",regi,"fehob")) = p04_IO_output_beforeFix("2005",regi,"seliqbio","fehob","tdbiohob") * pm_fedemand("2005",regi,"fehob")/p04_IO_output_beforeFix_Total("2005",regi,"fehob");
f04_IO_output("2005",regi,"seliqfos","fehob","tdfoshob")$(p04_IO_output_beforeFix_Total("2005",regi,"fehob")) = p04_IO_output_beforeFix("2005",regi,"seliqfos","fehob","tdfoshob") * pm_fedemand("2005",regi,"fehob")/p04_IO_output_beforeFix_Total("2005",regi,"fehob");
f04_IO_output("2005",regi,"seliqbio","fehob","tdbiohob")$(p04_IO_output_beforeFix_Total("2005",regi,"fehob")) = p04_IO_output_beforeFix("2005",regi,"seliqbio","fehob","tdbiohob") * pm_fedemandBuild("2005",regi,"fehob")/p04_IO_output_beforeFix_Total("2005",regi,"fehob");
f04_IO_output("2005",regi,"seliqfos","fehob","tdfoshob")$(p04_IO_output_beforeFix_Total("2005",regi,"fehob")) = p04_IO_output_beforeFix("2005",regi,"seliqfos","fehob","tdfoshob") * pm_fedemandBuild("2005",regi,"fehob")/p04_IO_output_beforeFix_Total("2005",regi,"fehob");


*** industry solids
Expand All @@ -97,18 +97,18 @@ p04_IO_output_beforeFix_Total(t,regi,"fesoi") = p04_IO_output_beforeFix(t,regi,"


f04_IO_output("2005",regi,"sesobio","fesoi","tdbiosoi")$(p04_IO_output_beforeFix_Total("2005",regi,"fesoi")) = p04_IO_output_beforeFix("2005",regi,"sesobio","fesoi","tdbiosoi")
* ( pm_fedemand("2005",regi,"feso_otherInd")
+ pm_fedemand("2005",regi,"feso_cement")
+ pm_fedemand("2005",regi,"feso_steel")
+ pm_fedemand("2005",regi,"feso_chemicals"))
* ( pm_fedemandInd("2005",regi,"feso_otherInd")
+ pm_fedemandInd("2005",regi,"feso_cement")
+ pm_fedemandInd("2005",regi,"feso_steel")
+ pm_fedemandInd("2005",regi,"feso_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fesoi");


f04_IO_output("2005",regi,"sesofos","fesoi","tdfossoi")$(p04_IO_output_beforeFix_Total("2005",regi,"fesoi")) = p04_IO_output_beforeFix("2005",regi,"sesofos","fesoi","tdfossoi")
* ( pm_fedemand("2005",regi,"feso_otherInd")
+ pm_fedemand("2005",regi,"feso_cement")
+ pm_fedemand("2005",regi,"feso_steel")
+ pm_fedemand("2005",regi,"feso_chemicals"))
* ( pm_fedemandInd("2005",regi,"feso_otherInd")
+ pm_fedemandInd("2005",regi,"feso_cement")
+ pm_fedemandInd("2005",regi,"feso_steel")
+ pm_fedemandInd("2005",regi,"feso_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fesoi");

*** industry liquids
Expand All @@ -117,18 +117,18 @@ p04_IO_output_beforeFix_Total(t,regi,"fehoi") = p04_IO_output_beforeFix(t,regi,"


f04_IO_output("2005",regi,"seliqbio","fehoi","tdbiohoi")$(p04_IO_output_beforeFix_Total("2005",regi,"fehoi")) = p04_IO_output_beforeFix("2005",regi,"seliqbio","fehoi","tdbiohoi")
* ( pm_fedemand("2005",regi,"feli_otherInd")
+ pm_fedemand("2005",regi,"feli_cement")
+ pm_fedemand("2005",regi,"feli_steel")
+ pm_fedemand("2005",regi,"feli_chemicals"))
* ( pm_fedemandInd("2005",regi,"feli_otherInd")
+ pm_fedemandInd("2005",regi,"feli_cement")
+ pm_fedemandInd("2005",regi,"feli_steel")
+ pm_fedemandInd("2005",regi,"feli_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fehoi");


f04_IO_output("2005",regi,"seliqfos","fehoi","tdfoshoi")$(p04_IO_output_beforeFix_Total("2005",regi,"fehoi")) = p04_IO_output_beforeFix("2005",regi,"seliqfos","fehoi","tdfoshoi")
* ( pm_fedemand("2005",regi,"feli_otherInd")
+ pm_fedemand("2005",regi,"feli_cement")
+ pm_fedemand("2005",regi,"feli_steel")
+ pm_fedemand("2005",regi,"feli_chemicals"))
* ( pm_fedemandInd("2005",regi,"feli_otherInd")
+ pm_fedemandInd("2005",regi,"feli_cement")
+ pm_fedemandInd("2005",regi,"feli_steel")
+ pm_fedemandInd("2005",regi,"feli_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fehoi");

*** industry gases
Expand All @@ -137,18 +137,18 @@ p04_IO_output_beforeFix_Total(t,regi,"fegai") = p04_IO_output_beforeFix(t,regi,"


f04_IO_output("2005",regi,"segabio","fegai","tdbiogai")$(p04_IO_output_beforeFix_Total("2005",regi,"fegai")) = p04_IO_output_beforeFix("2005",regi,"segabio","fegai","tdbiogai")
* ( pm_fedemand("2005",regi,"fega_otherInd")
+ pm_fedemand("2005",regi,"fega_cement")
+ pm_fedemand("2005",regi,"fega_steel")
+ pm_fedemand("2005",regi,"fega_chemicals"))
* ( pm_fedemandInd("2005",regi,"fega_otherInd")
+ pm_fedemandInd("2005",regi,"fega_cement")
+ pm_fedemandInd("2005",regi,"fega_steel")
+ pm_fedemandInd("2005",regi,"fega_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fegai");


f04_IO_output("2005",regi,"segafos","fegai","tdfosgai")$(p04_IO_output_beforeFix_Total("2005",regi,"fegai")) = p04_IO_output_beforeFix("2005",regi,"segafos","fegai","tdfosgai")
* ( pm_fedemand("2005",regi,"fega_otherInd")
+ pm_fedemand("2005",regi,"fega_cement")
+ pm_fedemand("2005",regi,"fega_steel")
+ pm_fedemand("2005",regi,"fega_chemicals"))
* ( pm_fedemandInd("2005",regi,"fega_otherInd")
+ pm_fedemandInd("2005",regi,"fega_cement")
+ pm_fedemandInd("2005",regi,"fega_steel")
+ pm_fedemandInd("2005",regi,"fega_chemicals"))
/ p04_IO_output_beforeFix_Total("2005",regi,"fegai");


Expand All @@ -158,7 +158,7 @@ p04_IO_output_beforeFix_Total(t,regi,"fehei") = p04_IO_output_beforeFix(t,regi,"


f04_IO_output("2005",regi,"sehe","fehei","tdhei")$(p04_IO_output_beforeFix_Total("2005",regi,"fehei")) = p04_IO_output_beforeFix("2005",regi,"sehe","fehei","tdhei")
* ( pm_fedemand("2005",regi,"fehe_otherInd")
* ( pm_fedemandInd("2005",regi,"fehe_otherInd")
)
/ p04_IO_output_beforeFix_Total("2005",regi,"fehei");

Expand Down
2 changes: 1 addition & 1 deletion modules/04_PE_FE_parameters/iea2014/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*** SOF ./modules/04_PE_FE_parameters/iea2014/declarations.gms

parameter
pm_IO_input(all_regi,all_enty,all_enty,all_te) "Energy input based on IEA data"
pm_IO_input(all_regi,all_enty,all_enty,all_te) "Energy input based on IEA data [TWa]"
pm_IO_output(tall,all_regi,all_enty,all_enty,all_te) "Historical energy output per technology based on IEA data [TWa]"
p04_IO_output(all_regi,all_enty,all_enty,all_te) "Energy output based on IEA data"
p04_x_enty2te_dyn04(all_regi,all_enty,all_enty,all_te,all_te) "parameter for the allocation of energy flow to technologies"
Expand Down
Loading
Loading