Skip to content

Commit 1146c91

Browse files
Merge pull request #88 from znichollscr/add-geomip-entries
Add GeoMIP experiments
2 parents e1ebc3d + 7b375b0 commit 1146c91

3 files changed

Lines changed: 101 additions & 27 deletions

File tree

activity/geomip.json

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
{
22
"@context": "000_context.jsonld",
3-
"type": "activity",
43
"id": "geomip",
5-
"name": "GeoMIP",
6-
"cmip_acronym": "GeoMIP",
7-
"long_name": "Geoengineering Model Intercomparison Project",
8-
"url": null,
4+
"type": "activity",
5+
"description": "Geoengineering model intercomparison project: exploration of the climate response to solar radiation manipulation.",
96
"drs_name": "GeoMIP"
10-
}
7+
}

experiment/g7-1p5k-sai.json

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,17 @@
22
"@context": "000_context.jsonld",
33
"id": "g7-1p5k-sai",
44
"type": "experiment",
5-
"experiment_id": "G7-1p5K-SAI",
6-
"activity_id": [
7-
"geomip"
5+
"description": "Stablisation of global-mean temperature at 1.5C by increasing stratospheric sulfur forcing to whatever level is required to achieve stable temperatures. The simulation generally branches from a scenario simulation at some point in the future.",
6+
"drs_name": "G7-1p5K-SAI",
7+
"activity": "geomip",
8+
"additional_allowed_model_components": [
9+
"aer",
10+
"chem",
11+
"bgc"
812
],
9-
"additional_allowed_model_components": [],
10-
"description": "Stratospheric aerosol injection to reduce warming to 1.5K \n Stratospheric aerosol injection to reduce warming to 1.5K above pre-industrial levels",
11-
"end_year": null,
12-
"experiment": "G7-1.5K-SAI",
13-
"min_number_yrs_per_sim": null,
14-
"parent_activity_id": [
15-
"no parent"
13+
"min_ensemble_size": 1,
14+
"required_model_components": [
15+
"aogcm"
1616
],
17-
"parent_experiment_id": [
18-
"no parent"
19-
],
20-
"required_model_components": [],
21-
"start_year": null,
22-
"sub_experiment_id": [
23-
"none"
24-
],
25-
"tier": 0,
26-
"drs_name": "G7-1p5K-SAI"
27-
}
17+
"tier": 1
18+
}

scripts/generate-experiments.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,14 @@ def initialise_activities(self) -> "Holder":
190190
experiments=[],
191191
urls=["https://doi.org/10.5194/gmd-18-4399-2025"],
192192
),
193+
ActivityProject(
194+
id="geomip",
195+
experiments=[],
196+
urls=[
197+
"https://doi.org/10.5194/gmd-17-2583-2024",
198+
"https://doi.org/10.1175/BAMS-D-25-0191.1",
199+
],
200+
),
193201
ActivityProject(
194202
id="pmip",
195203
experiments=[],
@@ -971,6 +979,83 @@ def add_scenario_entries(self) -> "Holder":
971979

972980
return self
973981

982+
def add_geomip_entries(self) -> "Holder":
983+
for (
984+
drs_name,
985+
description_univ,
986+
description_proj_to_format,
987+
base_scenario,
988+
start_year,
989+
) in (
990+
(
991+
"G7-1p5K-SAI",
992+
(
993+
"Stablisation of global-mean temperature at 1.5C "
994+
"by increasing stratospheric sulfur forcing "
995+
"to whatever level is required to achieve stable temperatures. "
996+
"The simulation generally branches from a scenario simulation at some point in the future."
997+
),
998+
(
999+
"Stablisation of global-mean temperature at 1.5C "
1000+
"by increasing stratospheric sulfur forcing "
1001+
"to whatever level is required to achieve stable temperatures "
1002+
"after following the `{scenario}` scenario until 2035."
1003+
),
1004+
"scen7-ml",
1005+
2035,
1006+
),
1007+
):
1008+
description_proj = description_proj_to_format.format(scenario=base_scenario)
1009+
start_timestamp = f"{start_year}-01-01"
1010+
for exp_proj in self.experiments_project:
1011+
if exp_proj.id == base_scenario:
1012+
parent = exp_proj
1013+
break
1014+
else:
1015+
raise AssertionError(base_scenario)
1016+
1017+
univ = ExperimentUniverse(
1018+
drs_name=drs_name,
1019+
description=description_univ,
1020+
activity="geomip",
1021+
additional_allowed_model_components=["aer", "chem", "bgc"],
1022+
# Defined in project
1023+
branch_information="dont_write",
1024+
end_timestamp="dont_write",
1025+
min_ensemble_size=1,
1026+
# Defined in project
1027+
min_number_yrs_per_sim="dont_write",
1028+
parent_activity="dont_write",
1029+
parent_experiment="dont_write",
1030+
parent_mip_era="dont_write",
1031+
required_model_components=["aogcm"],
1032+
# Defined in project
1033+
start_timestamp="dont_write",
1034+
tier=1,
1035+
)
1036+
1037+
self.experiments_universe.append(univ)
1038+
1039+
proj = ExperimentProject(
1040+
id=univ.drs_name.lower(),
1041+
description=description_proj,
1042+
branch_information=f"Branch from the `{base_scenario}` simulation at the start of {start_year}.",
1043+
activity=univ.activity,
1044+
start_timestamp=start_timestamp,
1045+
end_timestamp=None,
1046+
min_number_yrs_per_sim=50,
1047+
min_ensemble_size=1,
1048+
parent_activity=parent.activity,
1049+
parent_experiment=parent.id,
1050+
parent_mip_era="cmip7",
1051+
tier=1,
1052+
)
1053+
self.experiments_project.append(proj)
1054+
1055+
self.add_experiment_to_activity(proj)
1056+
1057+
return self
1058+
9741059
def write_files(self, project_root: Path, universe_root: Path) -> None:
9751060
for experiment_project in self.experiments_project:
9761061
experiment_project.write_file(project_root)
@@ -1036,6 +1121,7 @@ def main():
10361121
holder.add_damip_entries()
10371122
holder.add_pmip_entries()
10381123
holder.add_scenario_entries()
1124+
holder.add_geomip_entries()
10391125

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

0 commit comments

Comments
 (0)