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

Improve lst file2 #1254

Draft
wants to merge 11 commits into
base: develop
Choose a base branch
from
1 change: 1 addition & 0 deletions core/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@ loop(emi2te(enty,enty2,te,enty3)$teCCS(te),
);

*** Allocate emission factors to pm_emifac
option pm_emifac:3:3:1; !! improve display formatting
pm_emifac(ttot,regi,enty,enty2,te,"co2")$emi2te(enty,enty2,te,"co2") = fm_dataemiglob(enty,enty2,te,"co2");
pm_emifac(ttot,regi,enty,enty2,te,"cco2")$emi2te(enty,enty2,te,"cco2") = fm_dataemiglob(enty,enty2,te,"cco2");
*JeS scale N2O energy emissions to EDGAR
Expand Down
22 changes: 19 additions & 3 deletions modules/36_buildings/simple/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,30 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3


*** UE demand for reporting
Parameter
f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings"
*** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r

Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings"
/
$onverbatim
$Offlisting
$ondelim
$include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r"
$include "../../modules/36_buildings/simple/input/f36_uedemand_build.cs4r"
$offdelim
$Onlisting
$offverbatim
/
;


*$Offlisting
*table f_cf(tall,all_regi,all_te) "installed capacity availability"
*$ondelim
*$include "./core/input/f_cf.cs3r"
*$offdelim
*;
*$Onlisting


p36_uedemand_build(ttot,regi,in) = f36_uedemand_build(ttot,regi,"%cm_demScen%","%cm_rcp_scen_build%",in);


Expand Down
13 changes: 13 additions & 0 deletions modules/47_regipol/regiCarbonPrice/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/47_regipol/regiCarbonPrice/datainput.gms

*' RP: improve formatting of output: always have the iteration separate to allow easy comparison over iterations.
*' For non-iteration values show time and regi down, and the other two sets to the right
option p47_implicitQttyTarget_dev_iter:3:1:4;
option p47_implicitQttyTargetTaxRescale_iter:3:1:4;
option p47_implicitQttyTargetTax_iter:3:1:4;
option p47_implicitQttyTargetCurrent_iter:3:1:4;
option p47_implicitQttyTargetCurrent:3:2:2;
option pm_implicitQttyTarget:3:2:2;
option p47_implicitQttyTargetTax_prevIter:3:2:2;
option pm_implicitQttyTarget_dev:3:2:2;
option p47_implicitQttyTargetTax:3:2:2;
option p47_implicitQttyTargetTaxRescale:3:2:2;

*** initialize regipol target deviation parameter
pm_emiMktTarget_dev(ttot,ttot2,ext_regi,emiMktExt) = 0;

Expand Down
39 changes: 34 additions & 5 deletions modules/47_regipol/regiCarbonPrice/postsolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -435,11 +435,38 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = (1 - pm_implicitQttyTarget_dev(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) ** 2;
);
);
*** dampen rescale factor with increasing iterations to help convergence if the last two iteration deviations where not in the same direction
if((iteration.val gt 3) and (p47_implicitQttyTarget_dev_iter(iteration, ttot,ext_regi,qttyTarget,qttyTargetGroup)*p47_implicitQttyTarget_dev_iter(iteration-1, ttot,ext_regi,qttyTarget,qttyTargetGroup) < 0),
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) =
max(min( 2 * EXP( -0.15 * iteration.val ) + 1.01 ,p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup)),1/ ( 2 * EXP( -0.15 * iteration.val ) + 1.01));
option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale before dampening: ", p47_implicitQttyTargetTaxRescale;
*** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations
if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1,
if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 2.5, !! prevent numeric explosion
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 2.5;
);
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) =
( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 )
* exp( (p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1.5 ) * 2 )
+ 1
else !! if rescale is <1, do the same procedure on (1/rescale)
if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) < 0.4, !! prevent numeric explosion
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 0.4;
);
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) =
1
/ (
( (1 / p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) - 1 )
* exp( ( ( 1 / p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) - 1.5 ) * 2 )
+ 1
)
);
option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale after dampening: ", p47_implicitQttyTargetTaxRescale;

*** put a bound around the rescale factor with increasing iterations to help convergence if the last two iteration deviations where not in the same direction
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) =
max( min( 2 * EXP( -0.08 * iteration.val ) + 1.01 ,
p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup)
),
1 / ( 2 * EXP( -0.08 * iteration.val ) + 1.01)
);
option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale after boundaries: ", p47_implicitQttyTargetTaxRescale;
);

p47_implicitQttyTargetTaxRescale_iter(iteration,ttot,ext_regi,qttyTarget,qttyTargetGroup) = p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup);
Expand Down Expand Up @@ -495,7 +522,9 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt

p47_implicitQttyTargetTax_iter(iteration,ttot,all_regi,qttyTarget,qttyTargetGroup) = p47_implicitQttyTargetTax(ttot,all_regi,qttyTarget,qttyTargetGroup);

display p47_implicitQttyTargetCurrent, pm_implicitQttyTarget, p47_implicitQttyTargetTax_prevIter, pm_implicitQttyTarget_dev, p47_implicitQttyTarget_dev_iter, p47_implicitQttyTargetTax, p47_implicitQttyTargetTaxRescale, p47_implicitQttyTargetTaxRescale_iter, p47_implicitQttyTargetTax_iter, p47_implicitQttyTargetCurrent_iter, p47_implicitQttyTargetTax0;
option p47_implicitQttyTargetTaxRescale:3:2:2; !! update formatting for general overview
display p47_implicitQttyTargetCurrent, pm_implicitQttyTarget, p47_implicitQttyTargetTax_prevIter, pm_implicitQttyTarget_dev, p47_implicitQttyTarget_dev_iter, p47_implicitQttyTargetTax,
p47_implicitQttyTargetTaxRescale, p47_implicitQttyTargetTaxRescale_iter, p47_implicitQttyTargetTax_iter, p47_implicitQttyTargetCurrent_iter, p47_implicitQttyTargetTax0;

$endIf.cm_implicitQttyTarget

Expand Down