diff --git a/main.gms b/main.gms index a9fad5914..1ae8632cc 100755 --- a/main.gms +++ b/main.gms @@ -1470,7 +1470,7 @@ $setglobal cm_NDC_postTargetDevelopment constant !! def = "constant" *' * (zero): no minimum carbon price after first NDC target year, i.e. carbon price can decrease to zero after first NDC target year *' * (NPi): carbon price cannot fall below carbon price of NPi run as this represent the development of current policies *' * (NonDecreasing): carbon price cannot decrease after first NDC target year, but can increase or remain constant -$setglobal cm_NDC_CO2PriceMinimum NPi !! def = "NPi" !! regexp = zero|NPi|NonDecreasing +$setglobal cm_NDC_CO2PriceMinimum NonDecreasing !! def = "NonDecreasing" !! regexp = zero|NPi|NonDecreasing *' cm_NDC_TargetCheckConv "choose whether iterations should go on until all NDC emissions targets are fullfilled" [requires 45_carbonprice = NDC] *' This setting determines whether compliance with NDC emissions targets should be a criterion for convergence of REMIND. *' * (on): runs only converges if all NDC emissions targets are met within the tolerance defined by cm_NDC_target_DevTol diff --git a/modules/45_carbonprice/NDC/postsolve.gms b/modules/45_carbonprice/NDC/postsolve.gms index c1fd6a7b9..a088905fc 100644 --- a/modules/45_carbonprice/NDC/postsolve.gms +++ b/modules/45_carbonprice/NDC/postsolve.gms @@ -113,13 +113,17 @@ $elseif.cm_NDC_CO2PriceMinimum "%cm_NDC_CO2PriceMinimum%" == "NPi" pm_taxCO2eq(t,regi) = max( pm_taxCO2eq(t,regi), p45_taxCO2eq_bau(t,regi) ); $elseif.cm_NDC_CO2PriceMinimum "%cm_NDC_CO2PriceMinimum%" == "NonDecreasing" -*** CO2 price cannot decrease after first NDC target year, but can increase or remain constant +*** As above CO2 price should not fall below NPI run +pm_taxCO2eq(t,regi) = max( pm_taxCO2eq(t,regi), + p45_taxCO2eq_bau(t,regi) ); +*** In addition, CO2 price cannot decrease after first NDC target year, but can increase or remain constant loop(regi, - loop( t2$( t2.val eq p45_lastNDCyear(regi) ) , + loop( t2$( t2.val eq p45_firstNDCyear(regi) ) , pm_taxCO2eq(t,regi)$(t.val gt t2.val) = max( pm_taxCO2eq(t,regi), pm_taxCO2eq(t2,regi) ); ); ); + $endif.cm_NDC_CO2PriceMinimum display pm_taxCO2eq;