Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions activity/geomip.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
{
"@context": "000_context.jsonld",
"type": "activity",
"id": "geomip",
"name": "GeoMIP",
"cmip_acronym": "GeoMIP",
"long_name": "Geoengineering Model Intercomparison Project",
"url": null,
"type": "activity",
"description": "Geoengineering model intercomparison project: exploration of the climate response to solar radiation manipulation.",
"drs_name": "GeoMIP"
}
}
33 changes: 12 additions & 21 deletions experiment/g7-1p5k-sai.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,17 @@
"@context": "000_context.jsonld",
"id": "g7-1p5k-sai",
"type": "experiment",
"experiment_id": "G7-1p5K-SAI",
"activity_id": [
"geomip"
"description": "Stablisation of global-mean temperature at 1.5C by holding stratospheric sulfur forcing constant (at whatever level is required to achieve stable temperatures). The simulation generally branches from a scenario simulation at some point in the future.",
"drs_name": "G7-1p5K-SAI",
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: double check

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change should read:
"Stablisation of global-mean temperature at 1.5C by increasing stratospheric sulfur forcing to whatever level is required to achieve stable temperatures. The simulation branches from the ML ScenarioMIP-CMIP7 scenario simulation in 2035 following the experiment description in Visioni et al. (2024) (https://gmd.copernicus.org/articles/17/2583/2024/)"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes how this all fits is a big complex. Here we are in the universe so need general descriptions (there was no ML experiment in CMIP6 but this description has to sort of work for both CMIP6 and CMIP7). In the CMIP7 CVs we have the specifics, see https://github.com/WCRP-CMIP/CMIP7-CVs/pull/321/files#diff-c8fc3ad05752ae12fc64629a2f2a6b762b6d958d1eb7c37d48d735d1a99934c5

"activity": "geomip",
"additional_allowed_model_components": [
"aer",
"chem",
"bgc"
],
"additional_allowed_model_components": [],
"description": "Stratospheric aerosol injection to reduce warming to 1.5K \n Stratospheric aerosol injection to reduce warming to 1.5K above pre-industrial levels",
"end_year": null,
"experiment": "G7-1.5K-SAI",
"min_number_yrs_per_sim": null,
"parent_activity_id": [
"no parent"
"min_ensemble_size": 1,
"required_model_components": [
"aogcm"
],
"parent_experiment_id": [
"no parent"
],
"required_model_components": [],
"start_year": null,
"sub_experiment_id": [
"none"
],
"tier": 0,
"drs_name": "G7-1p5K-SAI"
}
"tier": 1
}
87 changes: 87 additions & 0 deletions scripts/generate-experiments.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,11 @@ def initialise_activities(self) -> "Holder":
experiments=[],
urls=["https://doi.org/10.5194/gmd-18-4399-2025"],
),
ActivityProject(
id="geomip",
experiments=[],
urls=["https://doi.org/10.5194/gmd-17-2583-2024"],
),
ActivityProject(
id="pmip",
experiments=[],
Expand Down Expand Up @@ -938,6 +943,87 @@ def add_scenario_entries(self) -> "Holder":

return self

def add_geomip_entries(self) -> "Holder":
for (
drs_name,
description_univ,
description_proj_to_format,
base_scenario,
start_year,
) in (
(
# TODO: check if this is the desired drs_name
"G7-1p5K-SAI",
(
"Stablisation of global-mean temperature at 1.5C "
"by holding stratospheric sulfur forcing constant "
# TODO: check - constant forcing may not lead to stable temperatures?!
"(at whatever level is required to achieve stable temperatures). "
"The simulation generally branches from a scenario simulation at some point in the future."
),
(
"After following the `{scenario}` scenario until 2035, "
"stablisation of global-mean temperature at 1.5C "
"by holding stratospheric sulfur forcing constant "
# TODO: check - constant forcing may not lead to stable temperatures?!
Comment thread
znichollscr marked this conversation as resolved.
Outdated
"(at whatever level is required to achieve stable temperatures)."
),
"scen7-m",
2035,
),
):
description_proj = description_proj_to_format.format(scenario=base_scenario)
start_timestamp = f"{start_year}-01-01"
for exp_proj in self.experiments_project:
if exp_proj.id == base_scenario:
parent = exp_proj
break
else:
raise AssertionError(base_scenario)

univ = ExperimentUniverse(
drs_name=drs_name,
description=description_univ,
activity="geomip",
additional_allowed_model_components=["aer", "chem", "bgc"],
# Defined in project
branch_information="dont_write",
end_timestamp="dont_write",
min_ensemble_size=1,
# Defined in project
min_number_yrs_per_sim="dont_write",
parent_activity="dont_write",
parent_experiment="dont_write",
parent_mip_era="dont_write",
required_model_components=["aogcm"],
# Defined in project
start_timestamp="dont_write",
tier=1,
)

self.experiments_universe.append(univ)

proj = ExperimentProject(
id=univ.drs_name.lower(),
description=description_proj,
branch_information=f"Branch from the `{base_scenario}` simulation at the start of {start_year}.",
activity=univ.activity,
start_timestamp=start_timestamp,
end_timestamp=None,
# TODO: why only 50?!
Comment thread
znichollscr marked this conversation as resolved.
Outdated
min_number_yrs_per_sim=50,
min_ensemble_size=1,
parent_activity=parent.activity,
parent_experiment=parent.id,
parent_mip_era="cmip7",
tier=1,
)
self.experiments_project.append(proj)

self.add_experiment_to_activity(proj)

return self

def write_files(self, project_root: Path, universe_root: Path) -> None:
for experiment_project in self.experiments_project:
experiment_project.write_file(project_root)
Expand Down Expand Up @@ -1003,6 +1089,7 @@ def main():
holder.add_damip_entries()
holder.add_pmip_entries()
holder.add_scenario_entries()
holder.add_geomip_entries()

holder.write_files(project_root=project_root, universe_root=universe_root)

Expand Down