From f9af3cd31728cc812c629e111175949c8bf92a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurin=20K=C3=B6hler-Schindler?= Date: Fri, 14 Feb 2025 11:22:20 +0100 Subject: [PATCH] adapt global budget convergence criterion for runs with interalized damages --- modules/80_optimization/nash/postsolve.gms | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/modules/80_optimization/nash/postsolve.gms b/modules/80_optimization/nash/postsolve.gms index 9f682168e9..4e8f380af1 100644 --- a/modules/80_optimization/nash/postsolve.gms +++ b/modules/80_optimization/nash/postsolve.gms @@ -374,12 +374,23 @@ loop((t,regi,entyPe)$pm_implicitPePriceTarget(t,regi,entyPe), ); $endIf.cm_implicitPePriceTarget -*** check global budget target from core/postsolve, must be within 2 Gt of target value +*** check global budget target from 45_carbonprice/functionalForm/postsolve +*** convergence criterion defined via cm_budgetCO2_absDevTol [default = 2 Gt CO2] +*** positive values of sm_globalBudget_absDev mean that target budget is exceeded (sm_globalBudget_absDev = s45_actualbudgetco2 - cm_budgetCO2from2020) +*** if damages are not internalized, check positive and negative deviation from target budget +*** if damages are internalized, only check positive deviation from target budget p80_globalBudget_absDev_iter(iteration) = sm_globalBudget_absDev; -if (abs(p80_globalBudget_absDev_iter(iteration)) gt cm_budgetCO2_absDevTol, - s80_bool = 0; - p80_messageShow("target") = YES; -); +$ifthen.globalBudget "%internalizeDamages%" == "off" + if (abs(p80_globalBudget_absDev_iter(iteration)) gt cm_budgetCO2_absDevTol, + s80_bool = 0; + p80_messageShow("target") = YES; + ); +$else.globalBudget + if (p80_globalBudget_absDev_iter(iteration) gt cm_budgetCO2_absDevTol, + s80_bool = 0; + p80_messageShow("target") = YES; + ); +$endIf.globalBudget *** additional criterion: if damage internalization is on, is damage iteration converged? p80_sccConvergenceMaxDeviation_iter(iteration) = pm_sccConvergenceMaxDeviation;