diff --git a/experiment/esm-scen7-h-aer.json b/experiment/esm-scen7-h-aer.json new file mode 100644 index 000000000..cf60d0edd --- /dev/null +++ b/experiment/esm-scen7-h-aer.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "esm-scen7-h-aer", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models without interactive chemistry. Models with interactive chemistry should run `esm-scen7-h-Aq` instead.", + "drs_name": "esm-scen7-h-Aer", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc", + "chem" + ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-h-aq.json b/experiment/esm-scen7-h-aq.json new file mode 100644 index 000000000..6a969e6a7 --- /dev/null +++ b/experiment/esm-scen7-h-aq.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "esm-scen7-h-aq", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models with interactive chemistry. Models without interactive chemistry should run `esm-scen7-h-Aer` instead.", + "drs_name": "esm-scen7-h-AQ", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc" + ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer", + "chem" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-vl-aer.json b/experiment/esm-scen7-vl-aer.json new file mode 100644 index 000000000..a1526e9ed --- /dev/null +++ b/experiment/esm-scen7-vl-aer.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "esm-scen7-vl-aer", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models without interactive chemistry. Models with interactive chemistry should run `esm-scen7-vl-Aq` instead.", + "drs_name": "esm-scen7-vl-Aer", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc", + "chem" + ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-vl-aq.json b/experiment/esm-scen7-vl-aq.json new file mode 100644 index 000000000..9cc25a577 --- /dev/null +++ b/experiment/esm-scen7-vl-aq.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "esm-scen7-vl-aq", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models with interactive chemistry. Models without interactive chemistry should run `esm-scen7-vl-Aer` instead.", + "drs_name": "esm-scen7-vl-AQ", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc" + ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer", + "chem" + ], + "tier": 1 +} diff --git a/experiment/scen7-h-aer.json b/experiment/scen7-h-aer.json new file mode 100644 index 000000000..8df811901 --- /dev/null +++ b/experiment/scen7-h-aer.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "scen7-h-aer", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models without interactive chemistry. Models with interactive chemistry should run `scen7-h-Aq` instead.", + "drs_name": "scen7-h-Aer", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc", + "chem" + ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer" + ], + "tier": 1 +} diff --git a/experiment/scen7-h-aq.json b/experiment/scen7-h-aq.json new file mode 100644 index 000000000..4dccc5ede --- /dev/null +++ b/experiment/scen7-h-aq.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "scen7-h-aq", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models with interactive chemistry. Models without interactive chemistry should run `scen7-h-Aer` instead.", + "drs_name": "scen7-h-AQ", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc" + ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer", + "chem" + ], + "tier": 1 +} diff --git a/experiment/scen7-vl-aer.json b/experiment/scen7-vl-aer.json new file mode 100644 index 000000000..db4a2c90d --- /dev/null +++ b/experiment/scen7-vl-aer.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "scen7-vl-aer", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models without interactive chemistry. Models with interactive chemistry should run `scen7-vl-Aq` instead.", + "drs_name": "scen7-vl-Aer", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc", + "chem" + ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer" + ], + "tier": 1 +} diff --git a/experiment/scen7-vl-aq.json b/experiment/scen7-vl-aq.json new file mode 100644 index 000000000..f14ae3961 --- /dev/null +++ b/experiment/scen7-vl-aq.json @@ -0,0 +1,25 @@ +{ + "@context": "000_context.jsonld", + "id": "scen7-vl-aq", + "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. This is for models with interactive chemistry. Models without interactive chemistry should run `scen7-vl-Aer` instead.", + "drs_name": "scen7-vl-AQ", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, + "activity": "aerchemmip", + "additional_allowed_model_components": [ + "bgc" + ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 3, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", + "required_model_components": [ + "aogcm", + "aer", + "chem" + ], + "tier": 1 +} diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 3ffdd192e..836e5347a 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -166,6 +166,13 @@ class Holder(BaseModel): def initialise_activities(self) -> "Holder": self.activities = [ + ActivityProject( + id="aerchemmip", + experiments=[], + urls=[ + "https://doi.org/10.5194/gmd-10-585-2017", + ], + ), ActivityProject( id="c4mip", experiments=[], @@ -986,6 +993,80 @@ def add_scenario_entries(self) -> "Holder": return self + def add_scenario_aerchemmip_entries(self) -> "Holder": + for base in ["vl", "h"]: + conc_driven_drs_name = self.get_scenario_drs_name(base) + for base_drs_name in [ + conc_driven_drs_name, + self.get_scenario_esm_drs_name(conc_driven_drs_name), + ]: + base_experiment_universe_l = [ + v for v in self.experiments_universe if v.drs_name == base_drs_name + ] + if len(base_experiment_universe_l) != 1: + raise AssertionError(base_drs_name) + base_experiment_universe = base_experiment_universe_l[0] + + for ( + suffix, + required_model_components, + additional_allowed_model_components, + desc_suffix, + ) in ( + ( + "-AQ", + ["aogcm", "aer", "chem"], + ["bgc"], + ( + "This is for models with interactive chemistry. " + "Models without interactive chemistry should run " + f"`{base_experiment_universe.drs_name}-Aer` instead." + ), + ), + ( + "-Aer", + ["aogcm", "aer"], + ["bgc", "chem"], + ( + "This is for models without interactive chemistry. " + "Models with interactive chemistry should run " + f"`{base_experiment_universe.drs_name}-Aq` instead." + ), + ), + ): + aerchemmip_experiment_universe = ( + base_experiment_universe.model_copy() + ) + aerchemmip_experiment_universe.drs_name = ( + f"{aerchemmip_experiment_universe.drs_name}{suffix}" + ) + aerchemmip_experiment_universe.activity = "aerchemmip" + + desc_base = aerchemmip_experiment_universe.description.split( + " Run with prescribed" + )[0] + aerchemmip_experiment_universe.description = ( + f"{desc_base} " + "Altered to use high aerosol and tropospheric non-methane ozone precursor emissions. " + f"{desc_suffix}" + ) + + aerchemmip_experiment_universe.min_ensemble_size = 3 + aerchemmip_experiment_universe.required_model_components = ( + required_model_components + ) + aerchemmip_experiment_universe.additional_allowed_model_components = additional_allowed_model_components + + aerchemmip_experiment_project = self.get_scenario_project( + aerchemmip_experiment_universe + ) + self.experiments_universe.append(aerchemmip_experiment_universe) + self.experiments_project.append(aerchemmip_experiment_project) + self.add_experiment_to_activity(aerchemmip_experiment_project) + + # TODO: ask someone to translate/write hist-piAQ for me. + # Not sure what hist-piAQ is or how it is defined. + def add_geomip_entries(self) -> "Holder": for ( drs_name, @@ -1061,6 +1142,7 @@ def add_geomip_entries(self) -> "Holder": self.add_experiment_to_activity(proj) + return self def write_files(self, project_root: Path, universe_root: Path) -> None: @@ -1128,6 +1210,7 @@ def main(): holder.add_damip_entries() holder.add_pmip_entries() holder.add_scenario_entries() + holder.add_scenario_aerchemmip_entries() holder.add_geomip_entries() holder.write_files(project_root=project_root, universe_root=universe_root)