Skip to content

Doing an ACCREU run

Running different scenarios

from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"

model = MIMOSA(params)
sim = model.run_nopolicy_baseline()

model.save_simulation(sim, "run_accreu_nopolicy")
from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"

model = MIMOSA(params)
model.solve()

model.save("run_accreu_mit")
from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"
params["economics"]["damages"]["accreu"]["adaptation"] = "sectoral"

model = MIMOSA(params)
sim = model.run_simulation()

model.save_simulation(sim, "run_accreu_ada")
from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"
params["economics"]["damages"]["accreu"]["adaptation"] = "sectoral"

model = MIMOSA(params)
model.solve()

model.save("run_accreu_mit_then_ada")
from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"
params["economics"]["damages"]["accreu"]["adaptation"] = "sectoral"
params["economics"]["damages"]["accreu"]["cba_strategy"] = "joint"

model = MIMOSA(params)
model.solve()

model.save("run_accreu_mit_ada_joint")

Changing assumptions

  • Original versus literature-based calibration.
  • Mortality monetisation and valuation.
  • Delayed adaptation and mitigation.

Sensitivity experiments

from mimosa import MIMOSA, load_params

params = load_params()

params["model structure"]["damage module"] = "ACCREU"
params["economics"]["damages"]["accreu"]["adaptation"] = "sectoral"
params["economics"]["damages"]["accreu"][
    "adaptation_determination"
] = "analytical_optimum"


# First run optimal adaptation simulation (ada)
model_ada = MIMOSA(params)
sim_ada = model_ada.run_simulation()

# Then, reduce the adaptation effectiveness, turning off analytical solution of optimal adaptation
params["economics"]["damages"]["accreu"]["adaptation_effectiveness_scale_factor"] = 0.5
params["economics"]["damages"]["accreu"]["adaptation_determination"] = "solver_control"

# And run the model with the same control variable values as the optimal adaptation simulation,
# but with reduced adaptation effectiveness
model = MIMOSA(params)
control_variables = model.simulator.control_variables
control_variables_values = {
    var: getattr(sim_ada, var).extract_values() for var in control_variables
}
sim = model.run_simulation(**control_variables_values)

model.save_simulation(sim, "run_accreu_ada_red_eff")
from mimosa import MIMOSA, load_params, load_adaptation_readiness

adaptation_readiness = load_adaptation_readiness()


def reduce_adaptation_costs(ssp, concrete_model):
    adaptation_vars = [
        "labourprod_adaptation_costs_abs",
        "slr_adaptation_costs_abs",
        "riverine_adaptation_costs_abs",
    ]

    # Keep the mitigation level (mitigation_level) the same
    control_values = {
        "mitigation_level": concrete_model.mitigation_level.extract_values()
    }

    def _get_adapt_readiness(t, r):
        year = str(int(concrete_model.year(t)))
        return adaptation_readiness.loc[(ssp, r), year]

    for adapt_var in adaptation_vars:
        values = getattr(concrete_model, adapt_var).extract_values()
        # Reduce these values by the adaptation readiness in each year/region
        reduced_values = {
            (t, r): _get_adapt_readiness(t, r) * value
            for (t, r), value in values.items()
        }
        control_values[adapt_var] = reduced_values

    return control_values


params = load_params()

params["model structure"]["damage module"] = "ACCREU"
params["economics"]["damages"]["accreu"]["adaptation"] = "sectoral"
params["economics"]["damages"]["accreu"][
    "adaptation_determination"
] = "analytical_optimum"

model_ada = MIMOSA(params)

# First run optimal adaptation simulation (ada)
sim_ada = model_ada.run_simulation()

# Then, calculate the reduced adaptation costs based on the adaptation readiness and the optimal adaptation simulation results
reduced_control_variables_values = reduce_adaptation_costs(params["SSP"], sim_ada)

# Finally, run the model again with these reduced adaptation costs, turning off analytical solution of optimal adaptation
params["economics"]["damages"]["accreu"]["adaptation_determination"] = "solver_control"
model = MIMOSA(params)
sim = model.run_simulation(**reduced_control_variables_values)

model.save_simulation(sim, "run_accreu_ada_impl_gap")
BCR of adaptation
  • BCR calculations and tables: diagnostics/adaptation_bcr.py.