Skip to content

Sea-level rise

Back to general structure

The sea-level rise (SLR) module is based on the AD-RICE 2012 model (Kelly de Bruin, 2014), which in itself is based on RICE 2010. It consists of sea-level rise contributions from thermal expansion, glaciers and small ice caps (GSIC), and the Greenland ice sheet (GIS). Sea-level rise from Antarctica is not included due to the high uncertainty involved.

Thermal expansion

The sea-level rise due to thermal expansion is calculated as follows:

\[ \text{SLR}_{\text{thermal}, t} = \text{SLR}_{\text{thermal},t-1} \cdot (1 - a)^{\frac{\Delta t}{10}} + \text{temperature}_{t-1} \cdot a \cdot \tfrac{\Delta t}{10} \cdot \text{equil. rate}_{\text{thermal}} \]

The initial sea-level rise due to thermal expansion (at time \(t=0\)) is calculated as:

\[ \text{SLR}_{\text{thermal},0} = \text{SLR}_{\text{thermal,init}} + a \cdot (\text{temperature}_{t=0} \cdot \text{equil. rate}_{\text{thermal}} - \text{SLR}_{\text{thermal,init}}) \]

with the following parameters:

Name Description Value
\(a\) Adjustment rate for thermal expansion 0.024076
\(\text{equil. rate}_{\text{thermal}}\) Equilibrium rate for thermal expansion 0.5 m / °C
\(\text{SLR}_{\text{thermal,init}}\) Initial sea-level rise due to thermal expansion 0.092067 m

Glaciers and small ice caps (GSIC)

Next, melting of glaciers and small ice caps (GSIC) contribute to sea-level rise according to:

\[ \begin{align*} \text{SLR}_{\text{GSIC}, t} &= \text{ SLR}_{\text{GSIC}, t-1}\\ +\ &\text{melt rate}\cdot \Delta t \cdot \frac{\text{total ice}_{\text{GSIC}} - \text{SLR}_{\text{GSIC}, t-1}}{\text{total ice}_{\text{GSIC}}} \cdot (\text{temperature}_{t-1} - \text{equil. temp}_{\text{GSIC}}) \end{align*} \]

with as initial value:

\[ \text{SLR}_{\text{GSIC},0} = 0.015 \]

and with the following parameters:

Name Description Value
\(\text{melt rate}\) Melt rate 0.0008 m / year
\(\text{total ice}_{\text{GSIC}}\) Total ice 0.26 m
\(\text{equil. temp}_{\text{GSIC}}\) Equilibrium temperature -1 °C

Greenland ice sheet (GIS)

The Greenland ice sheet (GIS) contributes to sea-level rise according to:

\[ \begin{align*} \text{SLR}_{\text{GIS}, t} &= \text{SLR}_{\text{GIS}, t-1}\\ +\ &\tfrac{\Delta t}{10} \cdot \tfrac{1}{100} \cdot (\text{melt rate above thresh} \cdot \text{temperature}_{t-1} + \text{init melt rate}) \\ & \cdot \left(1 - \frac{\text{SLR}_{\text{GIS}, t-1}}{\text{init ice volume}}\right) \end{align*} \]

with as initial value:

\[ \text{SLR}_{\text{GIS},0} = 0.006 \]

and with the following parameters:

Name Description Value
\(\text{melt rate above thresh}\) Melt rate above threshold 1.1186 m / year
\(\text{init melt rate}\) Initial melt rate 0.6 m / year
\(\text{init ice volume}\) Initial ice volume 7.3 m

Total sea-level rise

The total sea-level rise is the sum of the contributions from thermal expansion, GSIC, and GIS:

\[ \text{SLR}_t = \text{SLR}_{\text{thermal},t} + \text{SLR}_{\text{GSIC},t} + \text{SLR}_{\text{GIS},t} \]
Source code in mimosa/components/sealevelrise.py
def get_constraints(m: AbstractModel) -> Sequence[GeneralConstraint]:
    """
    The sea-level rise (SLR) module is based on the AD-RICE 2012 model ([Kelly de Bruin, 2014](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2600006)),
    which in itself is based on RICE 2010. It consists of sea-level rise contributions from thermal expansion, glaciers and small ice caps (GSIC),
    and the Greenland ice sheet (GIS). Sea-level rise from Antarctica is not included due to the high uncertainty involved.

    # Thermal expansion

    :::mimosa.components.sealevelrise.slr_thermal_expansion
        options:
            show_source: false

    The initial sea-level rise due to thermal expansion (at time $t=0$) is calculated as:

    :::mimosa.components.sealevelrise.slr_thermal_expansion_init
        options:
            show_source: false


    with the following parameters:

    | Name | Description | Value |
    | --- | --- | --- |
    | $a$ | Adjustment rate for thermal expansion | 0.024076 |
    | $\\text{equil. rate}_{\\text{thermal}}$ | Equilibrium rate for thermal expansion | 0.5 m / °C  |
    | $\\text{SLR}_{\\text{thermal,init}}$ | Initial sea-level rise due to thermal expansion | 0.092067 m |



    # Glaciers and small ice caps (GSIC)

    :::mimosa.components.sealevelrise.slr_gsic
        options:
            show_source: false

    with as initial value:

    $$
    \\text{SLR}_{\\text{GSIC},0} = 0.015
    $$

    and with the following parameters:

    | Name | Description | Value |
    | --- | --- | --- |
    | $\\text{melt rate}$ | Melt rate | 0.0008 m / year |
    | $\\text{total ice}_{\\text{GSIC}}$ | Total ice | 0.26 m |
    | $\\text{equil. temp}_{\\text{GSIC}}$ | Equilibrium temperature | -1 °C |


    # Greenland ice sheet (GIS)

    :::mimosa.components.sealevelrise.slr_gis
        options:
            show_source: false

    with as initial value:

    $$
    \\text{SLR}_{\\text{GIS},0} = 0.006
    $$

    and with the following parameters:

    | Name | Description | Value |
    | --- | --- | --- |
    | $\\text{melt rate above thresh}$ | Melt rate above threshold | 1.1186 m / year |
    | $\\text{init melt rate}$ | Initial melt rate | 0.6 m / year |
    | $\\text{init ice volume}$ | Initial ice volume | 7.3 m |

    # Total sea-level rise

    The total sea-level rise is the sum of the contributions from thermal expansion, GSIC, and GIS:

    $$
    \\text{SLR}_t = \\text{SLR}_{\\text{thermal},t} + \\text{SLR}_{\\text{GSIC},t} + \\text{SLR}_{\\text{GIS},t}
    $$


    """

    # Parameters and variables necessary for sea level rise
    m.slr_thermal = Var(m.t, within=NonNegativeReals, units=quant.unit("m"))
    m.slr_thermal_equil = Param(initialize=0.5)  # Equilibrium
    m.slr_thermal_init = Param(
        initialize=0.0920666936642
    )  # Initial SLR due to thermal expansion
    m.slr_thermal_adjust_rate = Param(initialize=0.024076141150722)  # Adjustment rate

    m.slr_cumgsic = Var(m.t, within=NonNegativeReals, units=quant.unit("m"))
    m.slr_gsic_melt_rate = Param(initialize=0.0008)  # Melt rate
    m.slr_gsic_total_ice = Param(initialize=0.26)  # Total ice
    m.slr_gsic_equil_temp = Param(initialize=-1)  # Equilibrium temperature

    m.slr_cumgis = Var(m.t, within=NonNegativeReals, units=quant.unit("m"))
    m.slr_gis_melt_rate_above_thresh = Param(
        initialize=1.11860082
    )  # Melt rate above threshold
    m.slr_gis_init_melt_rate = Param(initialize=0.6)  # Initial melt rate
    m.slr_gis_init_ice_vol = Param(initialize=7.3)  # Initial ice volume

    m.total_SLR = Var(m.t, within=NonNegativeReals, units=quant.unit("m"))

    # Constraints relating to SLR
    constraints = [
        # Thermal expansion
        GlobalConstraint(
            lambda m, t: (
                m.slr_thermal[t]
                == slr_thermal_expansion(m.slr_thermal[t - 1], m.temperature[t - 1], m)
                if t > 0
                else Constraint.Skip
            ),
            name="SLR_thermal",
        ),
        GlobalInitConstraint(
            lambda m: m.slr_thermal[0] == slr_thermal_expansion_init(m)
        ),
        # GSIC
        GlobalConstraint(
            lambda m, t: (
                m.slr_cumgsic[t]
                == slr_gsic(m.slr_cumgsic[t - 1], m.temperature[t - 1], m)
                if t > 0
                else Constraint.Skip
            ),
            name="SLR_GSIC",
        ),
        GlobalInitConstraint(lambda m: m.slr_cumgsic[0] == 0.015),
        # GIS
        GlobalConstraint(
            lambda m, t: (
                m.slr_cumgis[t] == slr_gis(m.slr_cumgis[t - 1], m.temperature[t - 1], m)
                if t > 0
                else Constraint.Skip
            ),
            name="SLR_GIS",
        ),
        GlobalInitConstraint(lambda m: m.slr_cumgis[0] == 0.006),
        # Total SLR is sum of each contributing factors
        GlobalConstraint(
            lambda m, t: m.total_SLR[t]
            == m.slr_thermal[t] + m.slr_cumgsic[t] + m.slr_cumgis[t],
            name="total_SLR",
        ),
    ]

    return constraints