Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include example of the "policy response process" described in paper #77

Open
hdrake opened this issue Dec 27, 2021 · 1 comment
Open
Labels
documentation Improvements or additions to documentation good first issue Good for newcomers help wanted Extra attention is needed

Comments

@hdrake
Copy link
Collaborator

hdrake commented Dec 27, 2021

Based on @danielkoll's feedback, I realized the policy response process is only described in MARGO paper (and corresponding notebooks), not anywhere in the existing documentation or examples. We should include a minimal example of the implementation, e.g. what if decision-makers only start considering carbon dioxide removal in 2050?

Just setting

delay_deployment = Dict(
"mitigate"=>0,
"remove"=>30,
"geoeng"=>0,
"adapt"=>0
)

doesn't quite do this because the policy makers in 2020 have perfect knowledge that CDR will become available in 2050 and will include that information in their decision making.

@hdrake hdrake added documentation Improvements or additions to documentation help wanted Extra attention is needed good first issue Good for newcomers labels Dec 27, 2021
@danielkoll
Copy link

Here is a minimal example. The example compares a 'delayed' policy scenario in which carbon capture only becomes available after 2100, versus an 'early' policy scenario in which carbon capture is available all along.

using ClimateMARGO
using ClimateMARGO.Models
using ClimateMARGO.Optimization
using ClimateMARGO.PolicyResponse
using PyPlot

## --------
## Define policy scenarios
params = deepcopy(ClimateMARGO.IO.included_configurations["default"])    # load default parameters

# First:
#  * solve no-carbon-capture baseline policy model
m_noCC = ClimateModel(params);
max_deployment_noCC = Dict("mitigate"=>1., "remove"=>0., "geoeng"=>1., "adapt"=>1.);  # disable carbon capture
@time optimize_controls!(m_noCC, max_deployment = max_deployment_noCC);

# Second:
#   * copy baseline
#   * step_forward to t=t0 so policy is preserved before t0
#   * make carbon capture available (= only effective after t0)
#   * finally, need to reset variable present_year; this doesn't seem to affect policy, but otherwise baseline CO2 emissions get messed up in plots
t0 = 80.  # [years]
m_withDelayedCC = deepcopy(m_noCC)
step_forward!(m_withDelayedCC,t0)
max_deployment_withCC = Dict("mitigate"=>1., "remove"=>1., "geoeng"=>1., "adapt"=>1.);
@time optimize_controls!(m_withDelayedCC, max_deployment = max_deployment_withCC);
m_withDelayedCC.domain.present_year = m_noCC.domain.present_year

# Third:
#   * compare to optimum policy if carbon capture had been available all along
m_withEarlyCC = deepcopy(m_noCC)
@time optimize_controls!(m_withEarlyCC, max_deployment = max_deployment_withCC);


## --------
## Make plots
fig, axes = ClimateMARGO.Plotting.plot_state(m_noCC);
fig, axes = ClimateMARGO.Plotting.plot_state(m_withDelayedCC);
fig, axes = ClimateMARGO.Plotting.plot_state(m_withEarlyCC);

@hdrake hdrake added this to the v1.0.0 release milestone Feb 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants