bugfix: make sure p_factorRescale_taxCO2_Funneled and p_factorRescale…
Compare changes
- Robert Pietzcker authored
bugfix: make sure p_factorRescale_taxCO2_Funneled and p_factorRescale_taxCO2 always have a value in iterative_target_adj eq 9
+ 22
− 12
@@ -330,8 +330,8 @@ display p_actualbudgetco2;
@@ -330,8 +330,8 @@ display p_actualbudgetco2;
*RP* Update tax levels/ multigasbudget values to reach the peak CO2 budget, with a linear increase afterwards given by cm_taxCO2inc_after_peakBudgYr
p_actualbudgetco2(t) = sum(ttot$(ttot.val < t.val AND ttot.val > 2010), (sum(regi, (vm_emiTe.l(ttot,regi,"co2") + vm_emiCdr.l(ttot,regi,"co2") + vm_emiMac.l(ttot,regi,"co2"))) * sm_c_2_co2 * pm_ts(ttot)))
+ sum(regi, (vm_emiTe.l(t,regi,"co2") + vm_emiCdr.l(t,regi,"co2") + vm_emiMac.l(t,regi,"co2")))*sm_c_2_co2 * (pm_ts(t) * 0.5 + 0.5)
+ sum(regi, (vm_emiTe.l("2010",regi,"co2") + vm_emiCdr.l("2010",regi,"co2") + vm_emiMac.l("2010",regi,"co2")))*sm_c_2_co2 * 2;
@@ -342,7 +342,11 @@ if(cm_iterative_target_adj eq 9,
@@ -342,7 +342,11 @@ if(cm_iterative_target_adj eq 9,
if(o_modelstat eq 2 AND ord(iteration)<cm_iteration_max AND s_actualbudgetco2 > 0 AND abs(c_budgetCO2 - s_actualbudgetco2) ge 2, !!only for optimal iterations, and not after the last one, and only if budget still possitive, and only if target not yet reached
@@ -356,8 +360,7 @@ if(cm_iterative_target_adj eq 9,
@@ -356,8 +360,7 @@ if(cm_iterative_target_adj eq 9,
@@ -388,29 +391,35 @@ if(cm_iterative_target_adj eq 9,
@@ -388,29 +391,35 @@ if(cm_iterative_target_adj eq 9,
else !! if(o_modelstat eq 2 AND ord(iteration)<cm_iteration_max AND s_actualbudgetco2 > 0 AND abs(c_budgetCO2 ))
if(s_actualbudgetco2 > 0 or abs(c_budgetCO2 - s_actualbudgetco2) < 2, !! if model was not optimal, or if budget already reached, keep tax constant
); !! if(o_modelstat eq 2 AND ord(iteration)<cm_iteration_max AND s_actualbudgetco2 > 0 AND abs(c_budgetCO2 - s_actualbudgetco2) ge 2,
o_totCO2emi_peakBudgYr(iteration) = sum(t$(t.val = cm_peakBudgYr), sum(regi2, vm_emiAll.l(t,regi2,"co2")) );
o_change_totCO2emi_peakBudgYr(iteration) = sum(ttot$(ttot.val = cm_peakBudgYr), (o_totCO2emi_allYrs(ttot-1,iteration) - o_totCO2emi_allYrs(ttot+1,iteration) )/4 ); !! Only gives a tolerance range, exact value not important. Division by 4 somewhat arbitrary - could be 3 or 5 as well.
display cm_peakBudgYr, o_diff_to_Budg, o_peakBudgYr_Itr, o_totCO2emi_allYrs, o_totCO2emi_peakBudgYr, o_change_totCO2emi_peakBudgYr;
*** check if cm_peakBudgYr is correct: if global emissions are already negative, move cm_peakBudgYr forward
if( abs(o_diff_to_Budg(iteration)) < 20, !! only think about shifting peakBudgYr if the budget is close enough to target budget
@@ -432,7 +441,7 @@ if(cm_iterative_target_adj eq 9,
@@ -432,7 +441,7 @@ if(cm_iterative_target_adj eq 9,
else !! don't do anything if the peakBudgYr is already at the corner values (2040, 2100) or if the emissions in the peakBudgYr are close to 0
@@ -442,7 +451,8 @@ if(cm_iterative_target_adj eq 9,
@@ -442,7 +451,8 @@ if(cm_iterative_target_adj eq 9,
pm_taxCO2eq(t,regi)$(t.val le cm_peakBudgYr) = p_taxCO2eq_until2150(t,regi); !! until peakBudgYr, take the contiuous price trajectory
if (o_delay_increase_peakBudgYear(iteration) = 1, !! if there was a flip-floping in the previous iterations, try to solve this