From 188ff78b2ec4987bc40aaf2619c4e2ebcdd6f9ee Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 22:57:19 +1100 Subject: [PATCH 1/5] Add entries --- activity/geomip.json | 9 ++-- experiment/g7-1p5k-sai.json | 33 +++++-------- scripts/generate-experiments.py | 87 +++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 27 deletions(-) diff --git a/activity/geomip.json b/activity/geomip.json index f1ba1d48e..68f6f9c13 100644 --- a/activity/geomip.json +++ b/activity/geomip.json @@ -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" -} \ No newline at end of file +} diff --git a/experiment/g7-1p5k-sai.json b/experiment/g7-1p5k-sai.json index 07c3f3b33..0f533d050 100644 --- a/experiment/g7-1p5k-sai.json +++ b/experiment/g7-1p5k-sai.json @@ -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", + "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" -} \ No newline at end of file + "tier": 1 +} diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 3e663a0d7..4c369dfe2 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -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=[], @@ -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?! + "(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?! + 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) @@ -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) From 0cb651719deeb54b7d95660266dab8f77d0800b5 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Fri, 12 Dec 2025 08:51:09 +1100 Subject: [PATCH 2/5] Update experiment description --- experiment/g7-1p5k-sai.json | 2 +- scripts/generate-experiments.py | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/experiment/g7-1p5k-sai.json b/experiment/g7-1p5k-sai.json index 0f533d050..b3a981f93 100644 --- a/experiment/g7-1p5k-sai.json +++ b/experiment/g7-1p5k-sai.json @@ -2,7 +2,7 @@ "@context": "000_context.jsonld", "id": "g7-1p5k-sai", "type": "experiment", - "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.", + "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.", "drs_name": "G7-1p5K-SAI", "activity": "geomip", "additional_allowed_model_components": [ diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 4c369dfe2..ce884c245 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -956,17 +956,15 @@ def add_geomip_entries(self) -> "Holder": "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). " + "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." ), ( "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?! - "(at whatever level is required to achieve stable temperatures)." + "by increasing stratospheric sulfur forcing " + "to whatever level is required to achieve stable temperatures." ), "scen7-m", 2035, From 3be5e7f9fadee8156d8d442bf976aa8cb592ad6c Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Sat, 13 Dec 2025 20:54:40 +1100 Subject: [PATCH 3/5] Remove check of drs_name --- scripts/generate-experiments.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index ce884c245..524d839d3 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -952,7 +952,6 @@ def add_geomip_entries(self) -> "Holder": start_year, ) in ( ( - # TODO: check if this is the desired drs_name "G7-1p5K-SAI", ( "Stablisation of global-mean temperature at 1.5C " From b72d383140d49633a5e126c21ba25604fb8fd6f9 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Sat, 13 Dec 2025 20:55:04 +1100 Subject: [PATCH 4/5] Remove check of 50 year minimum --- scripts/generate-experiments.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 524d839d3..8afe7aecc 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -1007,7 +1007,6 @@ def add_geomip_entries(self) -> "Holder": activity=univ.activity, start_timestamp=start_timestamp, end_timestamp=None, - # TODO: why only 50?! min_number_yrs_per_sim=50, min_ensemble_size=1, parent_activity=parent.activity, From 4b1c96cf3e8293d6175695f91ad26a45a252182e Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Sat, 13 Dec 2025 21:01:10 +1100 Subject: [PATCH 5/5] Update experiment description --- scripts/generate-experiments.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 8afe7aecc..a116ee270 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -188,7 +188,10 @@ def initialise_activities(self) -> "Holder": ActivityProject( id="geomip", experiments=[], - urls=["https://doi.org/10.5194/gmd-17-2583-2024"], + urls=[ + "https://doi.org/10.5194/gmd-17-2583-2024", + "https://doi.org/10.1175/BAMS-D-25-0191.1", + ], ), ActivityProject( id="pmip", @@ -960,12 +963,12 @@ def add_geomip_entries(self) -> "Holder": "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 " + "Stablisation of global-mean temperature at 1.5C " "by increasing stratospheric sulfur forcing " - "to whatever level is required to achieve stable temperatures." + "to whatever level is required to achieve stable temperatures " + "after following the `{scenario}` scenario until 2035." ), - "scen7-m", + "scen7-ml", 2035, ), ):