Closed embeagle closed 2 years ago
U_carbon
and breakevenCarbon_g_MJ
breakevenCarbon_g_MJ
is the carbon rate of the non-hydrogen producers that currently meet that demand (before using hydrogen). The breakeven carbon is converted from g/MJ to tonCO2/tonH2 (?):
# unit conversion 120,000 MJ/tonH2, 1,000,000 g/tonCO2:
self.carbon_g_MJ_to_t_tH2 = 120000.0 / 1000000.0
...
m.cons_breakevenCarbon = pe.Param(
m.consumer_set,
initialize=lambda m, i: g.nodes[i].get("breakevenCarbon_g_MJ", 0)
* H.carbon_g_MJ_to_t_tH2,
)
This is used to calculate the utility of a CHEC: $U\text{carbon} = \left ( \sum\text{nodes} CHEC_\text{demand} \text{(TonH2)} breakevenCarbon ( \frac{\text{TonCO2}}{\text{TonH2}} )\right ) carbon \textunderscore price (\frac{Dollar}{TonCO2})$.
I think this framework is intended to give more value to a CHEC when it is utilized by a sector that emits more CO2.
There is currently a constraint over consumer nodes in the model that is the only other instance of breakevenCarbon
:
consumer_co2_rate = m.cons_breakevenCarbon[node]
consumption_not_satisfied_by_h2 = m.cons_size[node] - m.cons_h[node]
constraint = (
m.co2_nonHydrogenConsumer[node]
== consumption_not_satisfied_by_h2 * consumer_co2_rate
)
which seems to define the pyomo variable m.co2_nonHydrogenConsumer
as the amount of carbon produced by demand that was unable to be met by the model. This is the only place this variable appears in the model. It is not in the objective nor in any other constraints. Removing the constraint has no impact on the model solve.
Set up CHEC constraint to sum globally over the entire system such that $\sum CHEC\text{demand} \le \sum CHEC\text{produced}$
for each producer type, $CHEC_{produced}$ is based fractionally compared to the baseline emissions of a standard SMR unit
for each demand type $CHEC_\text{demand}$ is given by
carbonSensitiveFraction
Do we want to set all new hydrogen demand to be completely carbon sensitive? ie.carbonSensitiveFraction
= 1 How much of the existing demand do we want to replace with low carbon hydrogen? iw.carbonSensitiveFraction
= what fraction CurrentlycarbonSensitiveFraction
is set by demand type (ie.transportationFuel
,industrialFuel
, orexisting
and not by hub location, so we can't currently, for example, say that Austin would want a higher fraction of clean hydrogen for transportation than El Paso. Do we want to adjust this? If we decide to set all new hydrogen demand to be only clean hydrogen demand this won't matter_What is
breakevenCarbon_g_MJ
?_ NOTE: thebreakevenCarbon_g_MJ
for existing demand indemand.csv
is different from thecarbon_g_MJ
inproduction_existing.csv
Carbon accounting in the objective function variables
P_carbon
: what producers will play for the carbon emissions from their hydrogen productionU_carbon
: added utility to the model based on the avoided cost of paying for carbon emissions for each consumerU_carbon_capture_credit
: the tax credit that producers (specifically SMR with CCS) get for capturing and storing carbon (45Q essentially)Add clean hydrogen production tax credit to model
production.csv
input file with the corresponding tax credit value for that production type based on emissions intensity