When allowing financial transfers for a global damage cost pool, a region can
receive financial transfers up to its level of climate damages:
\[
\href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}} \geq - \href{./#var__financialtransfer_globaldamagepool::damage_costs}{\text{damage costs}_{t,r}} \cdot \href{./#var__financialtransfer_globaldamagepool::GDP_gross}{\text{GDP}_{\text{gross},t,r}}
\]
The sum of financial transfers per time period should be zero, since it is a redistribution
of costs:
\[
\sum_r \href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}} = 0
\]
Also, in the first year, no financial transfers are allowed:
\[ \href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{0,r}} = 0. \]
financial_transfer_abs is expressed in currency units (dollars), while
financial_transfer is expressed as a fraction of gross GDP:
\[
\href{./#var__financialtransfer_globaldamagepool::financial_transfer}{\text{financial transfer}_{t,r}} = \frac{\href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}}}{\href{./#var__financialtransfer_globaldamagepool::GDP_gross}{\text{GDP}_{\text{gross},t,r}}}
\]
Source code in mimosa/components/financialtransfer/globaldamagepool.py
| def get_constraints(
m: ConcreteModel, inputs: ModelInputs
) -> Sequence[GeneralConstraint]:
r"""
When allowing financial transfers for a global damage cost pool, a region can
receive financial transfers up to its level of climate damages:
$$
\href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}} \geq - \href{./#var__financialtransfer_globaldamagepool::damage_costs}{\text{damage costs}_{t,r}} \cdot \href{./#var__financialtransfer_globaldamagepool::GDP_gross}{\text{GDP}_{\text{gross},t,r}}
$$
The sum of financial transfers per time period should be zero, since it is a redistribution
of costs:
$$
\sum_r \href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}} = 0
$$
Also, in the first year, no financial transfers are allowed:
$$ \href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{0,r}} = 0. $$
`financial_transfer_abs` is expressed in currency units (dollars), while
`financial_transfer` is expressed as a fraction of gross GDP:
$$
\href{./#var__financialtransfer_globaldamagepool::financial_transfer}{\text{financial transfer}_{t,r}} = \frac{\href{./#var__financialtransfer_globaldamagepool::financial_transfer_abs}{\text{financial transfer abs}_{t,r}}}{\href{./#var__financialtransfer_globaldamagepool::GDP_gross}{\text{GDP}_{\text{gross},t,r}}}
$$
"""
constraints = []
# Note: positive financial transfer means paying money, negative means receiving
m.financial_transfer_abs = Var(
m.t, m.regions, initialize=0, units=quant.unit("currency_unit")
)
m.financial_transfer = Var(
m.t, m.regions, initialize=0, units=quant.unit("fraction_of_GDP")
)
constraints.extend(
[
GlobalConstraint(
lambda m, t: (
sum(m.financial_transfer_abs[t, r] for r in m.regions) == 0.0
if t > 0
else Constraint.Skip
),
"zero_sum_of_yearly_financial_transfer",
),
RegionalInitConstraint(
lambda m, r: m.financial_transfer_abs[0, r] == 0.0,
"no_transfer_in_first_year",
),
RegionalConstraint(
lambda m, t, r: m.financial_transfer_abs[t, r]
>= -m.damage_costs[t, r] * m.GDP_gross[t, r],
"received_financial_transfer_max_own_damages",
),
RegionalConstraint(
lambda m, t, r: m.financial_transfer[t, r] * m.GDP_gross[t, r]
== m.financial_transfer_abs[t, r],
"financial_transfer_rel_to_gdp",
),
]
)
return constraints
|