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..b3a981f93 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 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": [ + "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 4a4440457..b947c0b81 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -190,6 +190,14 @@ 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", + "https://doi.org/10.1175/BAMS-D-25-0191.1", + ], + ), ActivityProject( id="pmip", experiments=[], @@ -971,6 +979,83 @@ 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 ( + ( + "G7-1p5K-SAI", + ( + "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." + ), + ( + "Stablisation of global-mean temperature at 1.5C " + "by increasing stratospheric sulfur forcing " + "to whatever level is required to achieve stable temperatures " + "after following the `{scenario}` scenario until 2035." + ), + "scen7-ml", + 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, + 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) @@ -1036,6 +1121,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)