From ec7b4afe8de292523f89cd967a2a5702baa63027 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 21:56:06 +1100 Subject: [PATCH 1/8] Update AMIP entries --- experiment/amip-p4k.json | 36 +++++++--------- experiment/amip-piforcing.json | 36 +++++++--------- experiment/amip.json | 33 ++++++--------- scripts/generate-experiments.py | 74 +++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 65 deletions(-) diff --git a/experiment/amip-p4k.json b/experiment/amip-p4k.json index 1b77657d0..7b0b07666 100644 --- a/experiment/amip-p4k.json +++ b/experiment/amip-p4k.json @@ -2,31 +2,23 @@ "@context": "000_context.jsonld", "id": "amip-p4k", "type": "experiment", - "experiment_id": "amip-p4K", - "activity_id": [ - "cfmip" - ], + "description": "Same as `amip` simulation, except sea surface temperatures are increased by 4K in ice-free regions.", + "drs_name": "amip-p4k", + "start_timestamp": null, + "end_timestamp": null, + "activity": "cfmip", "additional_allowed_model_components": [ "aer", - "chem" - ], - "description": "As CMIP5/CFMIP-2 amip4K experiment. AMIP experiment where SSTs are subject to a uniform warming of 4K", - "end_year": 2014, - "experiment": "AMIP with uniform 4K SST increase", - "min_number_yrs_per_sim": "36", - "parent_activity_id": [ - "no parent" - ], - "parent_experiment_id": [ - "no parent" + "chem", + "bgc" ], + "branch_information": null, + "min_ensemble_size": 1, + "parent_activity": null, + "parent_experiment": null, + "parent_mip_era": null, "required_model_components": [ "agcm" ], - "start_year": 1979, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "amip-p4K" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/amip-piforcing.json b/experiment/amip-piforcing.json index 17dfd6ca2..20117e66f 100644 --- a/experiment/amip-piforcing.json +++ b/experiment/amip-piforcing.json @@ -2,31 +2,23 @@ "@context": "000_context.jsonld", "id": "amip-piforcing", "type": "experiment", - "experiment_id": "amip-piForcing", - "activity_id": [ - "cfmip" - ], + "description": "Same as `amip` simulation, except it starts in 1870 and all forcings are set to pre-industrial levels rather than time-varying forcings.", + "drs_name": "amip-piForcing", + "start_timestamp": null, + "end_timestamp": null, + "activity": "cfmip", "additional_allowed_model_components": [ "aer", - "chem" - ], - "description": "Identical to standard AMIP experiment but from 1870-present with constant pre-industrial forcing levels (anthropogenic and natural)", - "end_year": 2014, - "experiment": "AMIP SSTs with pre-industrial anthropogenic and natural forcing", - "min_number_yrs_per_sim": "145", - "parent_activity_id": [ - "no parent" - ], - "parent_experiment_id": [ - "no parent" + "chem", + "bgc" ], + "branch_information": null, + "min_ensemble_size": 1, + "parent_activity": null, + "parent_experiment": null, + "parent_mip_era": null, "required_model_components": [ "agcm" ], - "start_year": 1870, - "sub_experiment_id": [ - "none" - ], - "tier": "2", - "drs_name": "amip-piForcing" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/amip.json b/experiment/amip.json index f85f94a20..cf28b4c60 100644 --- a/experiment/amip.json +++ b/experiment/amip.json @@ -2,32 +2,23 @@ "@context": "000_context.jsonld", "id": "amip", "type": "experiment", - "experiment_id": "amip", - "activity_id": [ - "cmip" - ], + "description": "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations.", + "drs_name": "amip", + "start_timestamp": null, + "end_timestamp": null, + "activity": "cmip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "description": "DECK: AMIP", - "end_year": 2022, - "experiment": "AMIP", - "min_number_yrs_per_sim": 43, - "parent_activity_id": [ - "no parent" - ], - "parent_experiment_id": [ - "no parent" - ], + "branch_information": null, + "min_ensemble_size": 1, + "parent_activity": null, + "parent_experiment": null, + "parent_mip_era": null, "required_model_components": [ "agcm" ], - "start_year": 1979, - "sub_experiment_id": [ - "none" - ], - "tier": 1, - "drs_name": "amip" -} \ No newline at end of file + "tier": 1 +} diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 9e3dc6816..b8d419d41 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -326,6 +326,79 @@ def add_abruptco2_entries(self) -> "Holder": return self + def add_amip_entries(self) -> "Holder": + for ( + drs_name, + description, + activity, + start_timestamp, + end_timestamp, + min_number_yrs_per_sim, + ) in ( + ( + "amip", + "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations.", + "cmip", + "1979-01-01", + "2021-12-31", + 43, + ), + ( + "amip-p4k", + "Same as `amip` simulation, except sea surface temperatures are increased by 4K in ice-free regions.", + "cfmip", + "1979-01-01", + "2021-12-31", + 43, + ), + ( + "amip-piForcing", + ( + "Same as `amip` simulation, except it starts in 1870 " + "and all forcings are set to pre-industrial levels " + "rather than time-varying forcings." + ), + "cfmip", + "1870-01-01", + "2021-12-31", + 152, + ), + ): + univ = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity=activity, + additional_allowed_model_components=["aer", "chem", "bgc"], + branch_information=None, + end_timestamp=None, + min_ensemble_size=1, + # Defined in project + min_number_yrs_per_sim="dont_write", + parent_activity=None, + parent_experiment=None, + parent_mip_era=None, + required_model_components=["agcm"], + start_timestamp=None, + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + activity=univ.activity, + start_timestamp=start_timestamp, + end_timestamp=end_timestamp, + min_number_yrs_per_sim=min_number_yrs_per_sim, + 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) @@ -384,6 +457,7 @@ def main(): holder.add_1pctco2_entries() holder.add_abruptco2_entries() + holder.add_amip_entries() holder.write_files(project_root=project_root, universe_root=universe_root) From 3f923f0eca72bf5ff31bb03cf61300fc36cc1f83 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 22:04:36 +1100 Subject: [PATCH 2/8] Add a number of other experiments --- activity/cmip.json | 11 +- activity/damip.json | 9 +- activity/pmip.json | 9 +- experiment/abrupt-127k.json | 38 +-- experiment/esm-flat10-cdr.json | 40 +-- experiment/esm-flat10-zec.json | 38 +-- experiment/esm-flat10.json | 38 +-- experiment/esm-hist.json | 4 +- experiment/esm-picontrol-spinup.json | 7 +- experiment/esm-picontrol.json | 10 +- experiment/hist-aer.json | 31 +-- experiment/hist-ghg.json | 31 +-- experiment/hist-nat.json | 31 +-- experiment/historical.json | 6 +- experiment/picontrol-spinup.json | 7 +- experiment/picontrol.json | 9 +- scripts/generate-experiments.py | 374 +++++++++++++++++++++++++++ 17 files changed, 485 insertions(+), 208 deletions(-) diff --git a/activity/cmip.json b/activity/cmip.json index 7ffff8bec..8d11ed85f 100644 --- a/activity/cmip.json +++ b/activity/cmip.json @@ -2,13 +2,6 @@ "@context": "000_context.jsonld", "id": "cmip", "type": "activity", - "description": "CMIP core common experiments i.e. the DECK (Diagnostic, Evaluation and Characterization of Klima)", - "drs_name": "CMIP", - "experiments": [ - "esm-hist", - "esm-picontrol", - "historical", - "picontrol" - ], - "urls": ["https://doi.org/10.5194/gmd-18-6671-2025"] + "description": "CMIP core common experiments i.e. the DECK (Diagnostic, Evaluation and Characterization of Klima).", + "drs_name": "CMIP" } diff --git a/activity/damip.json b/activity/damip.json index 197a155b8..e40ba8527 100644 --- a/activity/damip.json +++ b/activity/damip.json @@ -1,10 +1,7 @@ { "@context": "000_context.jsonld", - "type": "activity", "id": "damip", - "name": "DAMIP", - "cmip_acronym": "DAMIP", - "long_name": "Detection and Attribution Model Intercomparison Project", - "url": null, + "type": "activity", + "description": "Detection and attribution model intercomparison project: exploration of the role of individual forcings (both anthropogenic and natural) in past and future climate change.", "drs_name": "DAMIP" -} \ No newline at end of file +} diff --git a/activity/pmip.json b/activity/pmip.json index 7ba25667d..3b91f3f40 100644 --- a/activity/pmip.json +++ b/activity/pmip.json @@ -1,10 +1,7 @@ { "@context": "000_context.jsonld", - "type": "activity", "id": "pmip", - "name": "PMIP", - "cmip_acronym": "PMIP", - "long_name": "Palaeoclimate Modelling Intercomparison Project", - "url": null, + "type": "activity", + "description": "Palaeoclimate modelling intercomparison project: assessment of paleoclimate i.e. climate thousands of years or more in the past.", "drs_name": "PMIP" -} \ No newline at end of file +} diff --git a/experiment/abrupt-127k.json b/experiment/abrupt-127k.json index d80a8a988..0134b7a32 100644 --- a/experiment/abrupt-127k.json +++ b/experiment/abrupt-127k.json @@ -2,33 +2,23 @@ "@context": "000_context.jsonld", "id": "abrupt-127k", "type": "experiment", - "experiment_id": "abrupt-127k", - "activity_id": [ - "pmip" - ], + "description": "Simulation to examine the response to orbital and greenhouse gas concentration changes associated with the last interglacial (127 000 years before present).", + "drs_name": "abrupt-127k", + "start_timestamp": null, + "end_timestamp": null, + "min_number_yrs_per_sim": 100.0, + "activity": "pmip", "additional_allowed_model_components": [ - "aogcm", "aer", - "bgc", - "chem" - ], - "description": "Conceptually similar to abrupt-4xCO2 DECK experiment, except that orbital forcing (eccentricity, obliquity, length of perihelion) and greenhouse gas concentrations as per PMIP4 lig127k (Otto-Bliesner et al., 2017; also refer to Sime et al. in prep.) are abruptly changed from those of piControl, that also serves as an initial state, to their configuration of 127,000 years ago, with high boreal spring to autumn insolation leading to low sea-ice in the Arctic. AOGCM initialized from a spun-up piControl with constant-in-time forcing of orbital parameters and greenhouse gas concentrations indicative of 127,000 years before present; use of components AER, CHEM, BGC is allowed, yet it must be ensured that relevant greenhouse gas concentrations in the atmosphere stay constant at the specified values throughout the simulation; relevant references: Otto-Bliesner et al. (2017), https://gmd.copernicus.org/articles/10/3979/2017/; Guarino et al (2020), https://www.nature.com/articles/s41558-020-0865-2; Sime et al. (2023), https://cp.copernicus.org/articles/19/883/2023/", - "end_year": null, - "experiment": "abrupt imposure of the orbit and greenhouse gases of 127 ka before present", - "min_number_yrs_per_sim": "100", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "picontrol" + "chem", + "bgc" ], + "branch_information": "Branch from `piControl` at a time of your choosing", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "picontrol", "required_model_components": [ "aogcm" ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "abrupt-127k" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/esm-flat10-cdr.json b/experiment/esm-flat10-cdr.json index 36d9c3394..62715d734 100644 --- a/experiment/esm-flat10-cdr.json +++ b/experiment/esm-flat10-cdr.json @@ -2,35 +2,23 @@ "@context": "000_context.jsonld", "id": "esm-flat10-cdr", "type": "experiment", - "experiment_id": "esm-flat10-cdr", - "activity_id": [ - "c4mip" - ], + "description": "Extension of `esm-flat10` where emissions decline linearly to -10 PgC / yr then stay constant until cumulative emissions (including the emissions in `esm-flat10`) reach zero. An extra 20 years is included at the end to allow for calculating averages over different time windows.", + "drs_name": "esm-flat10-cdr", + "start_timestamp": null, + "end_timestamp": null, + "min_number_yrs_per_sim": 220.0, + "activity": "c4mip", "additional_allowed_model_components": [ - "agcm", - "bgc", "aer", - "chem", - "ism" - ], - "description": "esm-flat10-cdr is newly introduced for CMIP7 as an emissions-driven idealised experiment to quantify sensitivity of the earth system to CO2 removal / negative emissions. It requires fully-coupled AOGCM and BGC models with carbon cycle “emissions-driven” The esm-flat10-cdr experiment branches from year 100 of the esm-flat10 simulation, but with CO2 emissions set to decline linearly to zero after 50 years, decrease further (becoming negative) over the next 50 years (reaching -10 PgC/yr) and then remain constant at -10 PgC/yr for a final 100 years. It serves as an emissions-driven experiment to diagnose the reversibility of the Earth system due to carbon dioxide removal. By the end of the simulation the cumulative emissions over 300 years will be exactly zero – the same amount of CO2 has been removed as was added. Used with the partner experiments esm-flat10 and esm-flat10-zec it forms a vital part of assessment of TCRE, ZEC and reversibility. In particular these experiments make assessment of ZEC easier than CMIP6 because: the experiment is emissions-driven from the outset and does not require a change in configuration at the branch point and the branch point is common across all models. more details and analysis can be found here: https://egusphere.copernicus.org/preprints/2023/egusphere-2023-2127/ https://egusphere.copernicus.org/preprints/2024/egusphere-2024-3356/ this experiment is an evolution of the CDRMIP simulations from CMIP6: https://gmd.copernicus.org/articles/11/1133/2018/", - "end_year": null, - "experiment": "10 PgC/yr constant CO2 removal / negative emissions experiment", - "min_number_yrs_per_sim": "200", - "parent_activity_id": [ - "c4mip" - ], - "parent_experiment_id": [ - "esm-flat10" + "chem" ], + "branch_information": "Branch from `esm-flat10` at the end of year 100.", + "min_ensemble_size": 1, + "parent_activity": "c4mip", + "parent_experiment": "esm-flat10", "required_model_components": [ - "agcm", + "aogcm", "bgc" ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-flat10-cdr" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/esm-flat10-zec.json b/experiment/esm-flat10-zec.json index 2e3fe62f1..1401f3c24 100644 --- a/experiment/esm-flat10-zec.json +++ b/experiment/esm-flat10-zec.json @@ -2,35 +2,23 @@ "@context": "000_context.jsonld", "id": "esm-flat10-zec", "type": "experiment", - "experiment_id": "esm-flat10-zec", - "activity_id": [ - "c4mip" - ], + "description": "Extension of `esm-flat10` with zero emissions.", + "drs_name": "esm-flat10-zec", + "start_timestamp": null, + "end_timestamp": null, + "min_number_yrs_per_sim": 100.0, + "activity": "c4mip", "additional_allowed_model_components": [ - "aogcm", - "bgc", "aer", - "chem", - "ism" - ], - "description": "esm-flat10-zec is newly introduced for CMIP7 as an emissions-driven idealised experiment to quantify sensitivity of the earth system to CO2 emissions. It requires fully-coupled AOGCM and BGC models with carbon cycle “emissions-driven” The esm-flat10-zec experiment branches from year 100 of the esm-flat10 simulation, but with CO2 emissions set to zero for initial (minimum) period of 200 years. Longer runs are useful. It serves as an emissions-driven experiment to diagnose the Zero Emissions Commitment (ZEC), which is the continued warming (or cooling) following a sudden cessation of CO2 emissions. Used with the partner experiments esm-flat10 and esm-flat10-cdr it forms a vital part of assessment of TCRE, ZEC and reversibility. In particular these experiments make assessment of ZEC easier than CMIP6 because: the experiment is emissions-driven from the outset and does not require a change in configuration at the branch point and the branch point is common across all models. more details and analysis can be found here: https://egusphere.copernicus.org/preprints/2023/egusphere-2023-2127/ https://egusphere.copernicus.org/preprints/2024/egusphere-2024-3356/ this experiment is an evolution of the ZECMIP simulations from CMIP6: https://gmd.copernicus.org/articles/12/4375/2019/ , https://bg.copernicus.org/articles/17/2987/2020/", - "end_year": null, - "experiment": "zero-emissions commitment CO2 experiment", - "min_number_yrs_per_sim": "200", - "parent_activity_id": [ - "c4mip" - ], - "parent_experiment_id": [ - "esm-flat10" + "chem" ], + "branch_information": "Branch from `esm-flat10` at the end of year 100.", + "min_ensemble_size": 1, + "parent_activity": "c4mip", + "parent_experiment": "esm-flat10", "required_model_components": [ "aogcm", "bgc" ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-flat10-zec" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/esm-flat10.json b/experiment/esm-flat10.json index 3f928cb95..c0f2fdc23 100644 --- a/experiment/esm-flat10.json +++ b/experiment/esm-flat10.json @@ -2,35 +2,23 @@ "@context": "000_context.jsonld", "id": "esm-flat10", "type": "experiment", - "experiment_id": "esm-flat10", - "activity_id": [ - "c4mip" - ], + "description": "10 PgC / yr constant carbon dioxide emissions.", + "drs_name": "esm-flat10", + "start_timestamp": null, + "end_timestamp": null, + "min_number_yrs_per_sim": 100.0, + "activity": "c4mip", "additional_allowed_model_components": [ - "aogcm", - "bgc", "aer", - "chem", - "ism" - ], - "description": "esm-flat10 is newly introduced for CMIP7 as an emissions-driven idealised experiment to quantify sensitivity of the earth system to CO2 emissions. It requires fully-coupled AOGCM and BGC models with carbon cycle “emissions-driven” The esm-flat10 experiment branches from a stable esm-piControl simulation, with a constant annual prescribed anthropogenic flux of carbon of 10PgC/year into the atmosphere, with globally homogenous emissions for initial (minimum) period, 0-150 years. Longer runs - 300 years – are recommended. It serves as an emissions-driven experiment to diagnose the Transient Climate Response to cumulative Emissions (TCRE), which is the warming from pre-industrial levels observed after the emission of 1000PgC in a transient scenario. Used with the partner experiments esm-flat10-zec and esm-flat10-cdr it forms a vital part of assessment of TCRE, ZEC and reversibility. In particular these experiments make assessment of ZEC easier than CMIP6 because: the experiment is emissions-driven from the outset and does not require a change in configuration at the branch point and the branch point is common across all models. more details and analysis can be found here: https://egusphere.copernicus.org/preprints/2023/egusphere-2023-2127/ https://egusphere.copernicus.org/preprints/2024/egusphere-2024-3356/", - "end_year": null, - "experiment": "10 PgC/yr constant CO2 emissions experiment", - "min_number_yrs_per_sim": "150", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "esm-picontrol" + "chem" ], + "branch_information": "Branch from `esm-piControl` at a time of your choosing", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-picontrol", "required_model_components": [ "aogcm", "bgc" ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-flat10" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/esm-hist.json b/experiment/esm-hist.json index b719407c5..9627688a2 100644 --- a/experiment/esm-hist.json +++ b/experiment/esm-hist.json @@ -2,8 +2,9 @@ "@context": "000_context.jsonld", "id": "esm-hist", "type": "experiment", - "description": "Simulation of the climate of the recent past (typically meaning 1850 to present-day) with prescribed CO2 emissions (for prescribed CO2 concentration runs, see `historical`)", + "description": "Simulation of the climate of the recent past (typically meaning 1850 to present-day) with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `historical`).", "drs_name": "esm-hist", + "start_timestamp": "1850-01-01", "activity": "cmip", "additional_allowed_model_components": [ "aer", @@ -17,6 +18,5 @@ "aogcm", "bgc" ], - "start_timestamp": "1850-01-01", "tier": 1 } diff --git a/experiment/esm-picontrol-spinup.json b/experiment/esm-picontrol-spinup.json index f9641bde2..7dcf36eba 100644 --- a/experiment/esm-picontrol-spinup.json +++ b/experiment/esm-picontrol-spinup.json @@ -2,17 +2,17 @@ "@context": "000_context.jsonld", "id": "esm-picontrol-spinup", "type": "experiment", - "description": "Pre-industrial control spin-up simulation with prescribed CO2 emissions (for spin-up with prescribed CO2 concentrations, see `piControl-spinup`). Used to get the model into a state of approximate radiative equilibrium before starting the piControl simulation.", + "description": "Spin-up simulation. Used to get the model into a state of approximate radiative equilibrium before starting the `esm-piControl` simulation.", "drs_name": "esm-piControl-spinup", + "start_timestamp": null, + "end_timestamp": null, "activity": "cmip", "additional_allowed_model_components": [ "aer", "chem" ], "branch_information": null, - "end_timestamp": null, "min_ensemble_size": 1, - "min_number_yrs_per_sim": null, "parent_activity": null, "parent_experiment": null, "parent_mip_era": null, @@ -20,6 +20,5 @@ "aogcm", "bgc" ], - "start_timestamp": null, "tier": 1 } diff --git a/experiment/esm-picontrol.json b/experiment/esm-picontrol.json index 48119856a..4ee3425e3 100644 --- a/experiment/esm-picontrol.json +++ b/experiment/esm-picontrol.json @@ -2,24 +2,22 @@ "@context": "000_context.jsonld", "id": "esm-picontrol", "type": "experiment", - "description": "Pre-industrial control simulation with prescribed CO2 emissions (for pre-industrial control with prescribed CO2 concentrations, see `piControl`). Used to characterise natural variability and unforced behaviour.", + "description": "Pre-industrial control simulation with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `piControl`). Used to characterise natural variability and unforced behaviour.", "drs_name": "esm-piControl", + "start_timestamp": null, + "end_timestamp": null, "activity": "cmip", "additional_allowed_model_components": [ "aer", "chem" ], - "branch_information": "Branch from esm-piControl-spinup at a time of your choosing", - "end_timestamp": null, + "branch_information": "Branch from `esm-piControl-spinup` at a time of your choosing", "min_ensemble_size": 1, - "min_number_yrs_per_sim": 500, "parent_activity": "cmip", "parent_experiment": "esm-picontrol-spinup", - "parent_mip_era": null, "required_model_components": [ "aogcm", "bgc" ], - "start_timestamp": null, "tier": 1 } diff --git a/experiment/hist-aer.json b/experiment/hist-aer.json index 9b0588a25..bfa696f25 100644 --- a/experiment/hist-aer.json +++ b/experiment/hist-aer.json @@ -2,32 +2,21 @@ "@context": "000_context.jsonld", "id": "hist-aer", "type": "experiment", - "experiment_id": "hist-aer", - "activity_id": [ - "lesfmip" - ], + "description": "Response to historical aerosol forcing (often with extension using forcings from a scenario simulation specific to the CMIP phase). All other conditions are kept the same as piControl.", + "drs_name": "hist-aer", + "start_timestamp": "1850-01-01", + "activity": "damip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "description": "Anthropogenic-aerosol-only historical simulations", - "end_year": 2020, - "experiment": "historical anthropogenic aerosols-only run", - "min_number_yrs_per_sim": null, - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "picontrol" - ], + "branch_information": "Branch from `piControl` at a time of your choosing", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "picontrol", "required_model_components": [ "aogcm" ], - "start_year": 1850, - "sub_experiment_id": [ - "f2023" - ], - "tier": 1, - "drs_name": "hist-aer" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/hist-ghg.json b/experiment/hist-ghg.json index ea7fa770a..f8893336d 100644 --- a/experiment/hist-ghg.json +++ b/experiment/hist-ghg.json @@ -2,32 +2,21 @@ "@context": "000_context.jsonld", "id": "hist-ghg", "type": "experiment", - "experiment_id": "hist-GHG", - "activity_id": [ - "lesfmip" - ], + "description": "Response to historical aerosol forcing (often with extension using forcings from a scenario simulation specific to the CMIP phase). All other conditions are kept the same as piControl.", + "drs_name": "hist-GHG", + "start_timestamp": "1850-01-01", + "activity": "damip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "description": "Well-mixed greenhouse-gas-only historical simulations", - "end_year": 2020, - "experiment": "historical well-mixed GHG-only run", - "min_number_yrs_per_sim": null, - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "picontrol" - ], + "branch_information": "Branch from `piControl` at a time of your choosing", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "picontrol", "required_model_components": [ "aogcm" ], - "start_year": 1850, - "sub_experiment_id": [ - "f2023" - ], - "tier": 1, - "drs_name": "hist-GHG" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/hist-nat.json b/experiment/hist-nat.json index 1664afa47..1afbcb9f5 100644 --- a/experiment/hist-nat.json +++ b/experiment/hist-nat.json @@ -2,32 +2,21 @@ "@context": "000_context.jsonld", "id": "hist-nat", "type": "experiment", - "experiment_id": "hist-nat", - "activity_id": [ - "lesfmip" - ], + "description": "Response to historical aerosol forcing (often with extension using forcings from a scenario simulation specific to the CMIP phase). All other conditions are kept the same as piControl.", + "drs_name": "hist-nat", + "start_timestamp": "1850-01-01", + "activity": "damip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "description": "Natural forcings (solar + volcanic)", - "end_year": 2020, - "experiment": "historical natural-only run", - "min_number_yrs_per_sim": null, - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "picontrol" - ], + "branch_information": "Branch from `piControl` at a time of your choosing", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "picontrol", "required_model_components": [ "aogcm" ], - "start_year": 1850, - "sub_experiment_id": [ - "f2023" - ], - "tier": 3, - "drs_name": "hist-nat" -} \ No newline at end of file + "tier": 1 +} diff --git a/experiment/historical.json b/experiment/historical.json index 5f14e1635..9b1b29c4a 100644 --- a/experiment/historical.json +++ b/experiment/historical.json @@ -2,21 +2,21 @@ "@context": "000_context.jsonld", "id": "historical", "type": "experiment", - "description": "Simulation of the climate of the recent past (typically meaning 1850 to present-day)", + "description": "Simulation of the climate of the recent past (typically meaning 1850 to present-day) with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-hist`).", "drs_name": "historical", + "start_timestamp": "1850-01-01", "activity": "cmip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "branch_information": "Branch from piControl at a time of your choosing", + "branch_information": "Branch from `piControl` at a time of your choosing", "min_ensemble_size": 1, "parent_activity": "cmip", "parent_experiment": "picontrol", "required_model_components": [ "aogcm" ], - "start_timestamp": "1850-01-01", "tier": 1 } diff --git a/experiment/picontrol-spinup.json b/experiment/picontrol-spinup.json index 9751aa604..a7ee843c4 100644 --- a/experiment/picontrol-spinup.json +++ b/experiment/picontrol-spinup.json @@ -2,8 +2,10 @@ "@context": "000_context.jsonld", "id": "picontrol-spinup", "type": "experiment", - "description": "Pre-industrial control spin-up simulation. Used to get the model into a state of approximate radiative equilibrium before starting the piControl simulation.", + "description": "Spin-up simulation. Used to get the model into a state of approximate radiative equilibrium before starting the `piControl` simulation.", "drs_name": "piControl-spinup", + "start_timestamp": null, + "end_timestamp": null, "activity": "cmip", "additional_allowed_model_components": [ "aer", @@ -11,15 +13,12 @@ "bgc" ], "branch_information": null, - "end_timestamp": null, "min_ensemble_size": 1, - "min_number_yrs_per_sim": null, "parent_activity": null, "parent_experiment": null, "parent_mip_era": null, "required_model_components": [ "aogcm" ], - "start_timestamp": null, "tier": 1 } diff --git a/experiment/picontrol.json b/experiment/picontrol.json index 2a2bbed0f..73f72a9a1 100644 --- a/experiment/picontrol.json +++ b/experiment/picontrol.json @@ -2,23 +2,22 @@ "@context": "000_context.jsonld", "id": "picontrol", "type": "experiment", - "description": "Pre-industrial control simulation. Used to characterise natural variability and unforced behaviour.", + "description": "Pre-industrial control simulation with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-piControl`). Used to characterise natural variability and unforced behaviour.", "drs_name": "piControl", + "start_timestamp": null, + "end_timestamp": null, "activity": "cmip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], - "branch_information": "Branch from piControl-spinup at a time of your choosing", - "end_timestamp": null, + "branch_information": "Branch from `piControl-spinup` at a time of your choosing", "min_ensemble_size": 1, - "min_number_yrs_per_sim": 500, "parent_activity": "cmip", "parent_experiment": "picontrol-spinup", "required_model_components": [ "aogcm" ], - "start_timestamp": null, "tier": 1 } diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index b8d419d41..4afbf908a 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -180,6 +180,19 @@ def initialise_activities(self) -> "Holder": experiments=[], urls=["https://doi.org/10.5194/gmd-18-6671-2025"], ), + ActivityProject( + id="damip", + experiments=[], + urls=["https://doi.org/10.5194/gmd-18-4399-2025"], + ), + ActivityProject( + id="pmip", + experiments=[], + urls=[ + "https://doi.org/10.5194/gmd-10-3979-2017", + "https://doi.org/10.5194/cp-19-883-2023", + ], + ), ] def add_experiment_to_activity(self, experiment: ExperimentProject) -> "Holder": @@ -399,6 +412,362 @@ def add_amip_entries(self) -> "Holder": return self + def add_picontrol_entries(self) -> "Holder": + for ( + drs_name, + description, + min_number_yrs_per_sim, + tier, + parent_experiment, + branch_information, + ) in ( + ( + "piControl", + ( + "Pre-industrial control simulation " + "with prescribed carbon dioxide concentrations " + "(for prescribed carbon dioxide emissions, see `esm-piControl`). " + "Used to characterise natural variability and unforced behaviour." + ), + 400, + 1, + "picontrol-spinup", + "Branch from `piControl-spinup` at a time of your choosing", + ), + ( + "piControl-spinup", + ( + "Spin-up simulation. " + "Used to get the model into a state of approximate radiative equilibrium " + "before starting the `piControl` simulation." + ), + None, + 3, + None, + None, + ), + ( + "esm-piControl", + ( + "Pre-industrial control simulation " + "with prescribed carbon dioxide emissions " + "(for prescribed carbon dioxide concentrations, see `piControl`). " + "Used to characterise natural variability and unforced behaviour." + ), + 400, + 1, + "esm-picontrol-spinup", + "Branch from `esm-piControl-spinup` at a time of your choosing", + ), + ( + "esm-piControl-spinup", + ( + "Spin-up simulation. " + "Used to get the model into a state of approximate radiative equilibrium " + "before starting the `esm-piControl` simulation." + ), + None, + 3, + None, + None, + ), + ): + if drs_name.startswith("esm-"): + additional_allowed_model_components = ["aer", "chem"] + required_model_components = ["aogcm", "bgc"] + + else: + additional_allowed_model_components = ["aer", "chem", "bgc"] + required_model_components = ["aogcm"] + + univ = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity="cmip", + additional_allowed_model_components=additional_allowed_model_components, + branch_information=branch_information, + end_timestamp=None, + min_ensemble_size=1, + # Defined in project + min_number_yrs_per_sim="dont_write", + parent_activity=None if parent_experiment is None else "cmip", + parent_experiment=parent_experiment, + # Defined in project + parent_mip_era=None if parent_experiment is None else "dont_write", + required_model_components=required_model_components, + start_timestamp=None, + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + activity=univ.activity, + min_number_yrs_per_sim=min_number_yrs_per_sim, + parent_mip_era="cmip7" if parent_experiment is not None else None, + tier=tier, + ) + self.experiments_project.append(proj) + + self.add_experiment_to_activity(proj) + + return self + + def add_historical_entries(self) -> "Holder": + for ( + drs_name, + description, + parent_experiment, + branch_information, + ) in ( + ( + "historical", + ( + "Simulation of the climate of the recent past " + "(typically meaning 1850 to present-day) " + "with prescribed carbon dioxide concentrations " + "(for prescribed carbon dioxide emissions, see `esm-hist`)." + ), + "picontrol", + "Branch from `piControl` at a time of your choosing", + ), + ( + "esm-hist", + ( + "Simulation of the climate of the recent past " + "(typically meaning 1850 to present-day) " + "with prescribed carbon dioxide emissions " + "(for prescribed carbon dioxide concentrations, see `historical`)." + ), + "esm-picontrol", + "Branch from esm-piControl at a time of your choosing", + ), + ): + if drs_name.startswith("esm-"): + additional_allowed_model_components = ["aer", "chem"] + required_model_components = ["aogcm", "bgc"] + + else: + additional_allowed_model_components = ["aer", "chem", "bgc"] + required_model_components = ["aogcm"] + + univ = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity="cmip", + additional_allowed_model_components=additional_allowed_model_components, + branch_information=branch_information, + # Defined in project + end_timestamp="dont_write", + min_ensemble_size=1, + # Defined in project + min_number_yrs_per_sim="dont_write", + parent_activity="cmip", + parent_experiment=parent_experiment, + # Defined in project + parent_mip_era="dont_write", + required_model_components=required_model_components, + start_timestamp="1850-01-01", + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + activity=univ.activity, + start_timestamp="1850-01-01", + end_timestamp="2021-12-31", + min_number_yrs_per_sim=172, + parent_mip_era="cmip7", + tier=1, + ) + self.experiments_project.append(proj) + + self.add_experiment_to_activity(proj) + + return self + + def add_flat10_entries(self) -> "Holder": + univ_flat10 = ExperimentUniverse( + drs_name="esm-flat10", + description="10 PgC / yr constant carbon dioxide emissions.", + activity="c4mip", + additional_allowed_model_components=["aer", "chem"], + branch_information="Branch from `esm-piControl` at a time of your choosing", + end_timestamp=None, + min_ensemble_size=1, + min_number_yrs_per_sim=100.0, + parent_activity="cmip", + parent_experiment="esm-picontrol", + # Defined in project + parent_mip_era="dont_write", + required_model_components=["aogcm", "bgc"], + start_timestamp=None, + tier=1, + ) + + self.experiments_universe.append(univ_flat10) + + proj_flat10 = ExperimentProject( + id=univ_flat10.drs_name.lower(), + activity=univ_flat10.activity, + parent_mip_era="cmip7", + tier=1, + ) + self.experiments_project.append(proj_flat10) + self.add_experiment_to_activity(proj_flat10) + + for ( + drs_name, + description, + branch_information, + min_number_yrs_per_sim, + ) in ( + ( + "esm-flat10-cdr", + ( + "Extension of `esm-flat10` where emissions decline linearly to -10 PgC / yr " + "then stay constant until cumulative emissions " + "(including the emissions in `esm-flat10`) reach zero. " + "An extra 20 years is included at the end to allow for calculating averages over different time windows." + ), + "Branch from `esm-flat10` at the end of year 100.", + 220.0, + ), + ( + "esm-flat10-zec", + "Extension of `esm-flat10` with zero emissions.", + "Branch from `esm-flat10` at the end of year 100.", + 100.0, + ), + ): + univ = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity=univ_flat10.activity, + additional_allowed_model_components=univ_flat10.additional_allowed_model_components, + branch_information=branch_information, + end_timestamp=None, + min_ensemble_size=1, + min_number_yrs_per_sim=min_number_yrs_per_sim, + parent_activity=univ_flat10.activity, + parent_experiment=proj_flat10.id, + # Defined in project + parent_mip_era="dont_write", + required_model_components=univ_flat10.required_model_components, + start_timestamp=None, + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + activity=univ.activity, + parent_mip_era="cmip7", + tier=1, + ) + self.experiments_project.append(proj) + + self.add_experiment_to_activity(proj) + + return self + + def add_damip_entries(self) -> "Holder": + for drs_name, forcing in ( + ("hist-aer", "aerosol"), + ("hist-GHG", "aerosol"), + ("hist-nat", "aerosol"), + ): + univ = ExperimentUniverse( + drs_name=drs_name, + description=( + f"Response to historical {forcing} forcing " + "(often with extension using forcings from a scenario simulation specific to the CMIP phase). " + "All other conditions are kept the same as piControl." + ), + activity="damip", + additional_allowed_model_components=["aer", "chem", "bgc"], + branch_information="Branch from `piControl` at a time of your choosing", + # Defined in project + end_timestamp="dont_write", + min_ensemble_size=1, + # Defined in project + min_number_yrs_per_sim="dont_write", + parent_activity="cmip", + parent_experiment="picontrol", + # Defined in project + parent_mip_era="dont_write", + required_model_components=["aogcm"], + # Defined in project + start_timestamp="1850-01-01", + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + description=( + f"Response to historical {forcing} forcing " + "(with extension using forcings from the `m` scenario simulation). " + "All other conditions are kept the same as piControl." + ), + activity=univ.activity, + start_timestamp="1850-01-01", + end_timestamp="2035-12-31", + min_number_yrs_per_sim=186, + min_ensemble_size=3, + parent_mip_era="cmip7", + tier=1, + ) + self.experiments_project.append(proj) + + self.add_experiment_to_activity(proj) + + return self + + def add_pmip_entries(self) -> "Holder": + drs_name = "abrupt-127k" + description = ( + "Simulation to examine the response to orbital and greenhouse gas concentration changes " + "associated with the last interglacial (127 000 years before present)." + ) + + univ = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity="pmip", + additional_allowed_model_components=["aer", "chem", "bgc"], + branch_information="Branch from `piControl` at a time of your choosing", + end_timestamp=None, + min_ensemble_size=1, + min_number_yrs_per_sim=100.0, + parent_activity="cmip", + parent_experiment="picontrol", + parent_mip_era="dont_write", + required_model_components=["aogcm"], + start_timestamp=None, + tier=1, + ) + + self.experiments_universe.append(univ) + + proj = ExperimentProject( + id=univ.drs_name.lower(), + activity=univ.activity, + min_number_yrs_per_sim=100.0, + 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) @@ -458,6 +827,11 @@ def main(): holder.add_1pctco2_entries() holder.add_abruptco2_entries() holder.add_amip_entries() + holder.add_picontrol_entries() + holder.add_historical_entries() + holder.add_flat10_entries() + holder.add_damip_entries() + holder.add_pmip_entries() holder.write_files(project_root=project_root, universe_root=universe_root) From 44216648daeb5265b17259d4f84cc90dc07700c4 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 22:11:05 +1100 Subject: [PATCH 3/8] Add scenariomip entries --- activity/scenariomip.json | 2 +- experiment/esm-scen7-h-ext.json | 20 +++- experiment/esm-scen7-h.json | 20 +++- experiment/esm-scen7-hl-ext.json | 20 +++- experiment/esm-scen7-hl.json | 20 +++- experiment/esm-scen7-l-ext.json | 20 +++- experiment/esm-scen7-l.json | 20 +++- experiment/esm-scen7-ln-ext.json | 20 +++- experiment/esm-scen7-ln.json | 20 +++- experiment/esm-scen7-m-ext.json | 20 +++- experiment/esm-scen7-m.json | 20 +++- experiment/esm-scen7-ml-ext.json | 20 +++- experiment/esm-scen7-ml.json | 20 +++- experiment/esm-scen7-vl-ext.json | 20 +++- experiment/esm-scen7-vl.json | 20 +++- experiment/scen7-h-ext.json | 14 ++- experiment/scen7-h.json | 14 ++- experiment/scen7-hl-ext.json | 14 ++- experiment/scen7-hl.json | 14 ++- experiment/scen7-l-ext.json | 14 ++- experiment/scen7-l.json | 14 ++- experiment/scen7-ln-ext.json | 14 ++- experiment/scen7-ln.json | 14 ++- experiment/scen7-m-ext.json | 14 ++- experiment/scen7-m.json | 14 ++- experiment/scen7-ml-ext.json | 14 ++- experiment/scen7-ml.json | 14 ++- experiment/scen7-vl-ext.json | 14 ++- experiment/scen7-vl.json | 14 ++- scripts/generate-experiments.py | 171 +++++++++++++++++++++++++++++++ 30 files changed, 550 insertions(+), 99 deletions(-) diff --git a/activity/scenariomip.json b/activity/scenariomip.json index 0c3eabfc9..3bfd2653f 100644 --- a/activity/scenariomip.json +++ b/activity/scenariomip.json @@ -2,6 +2,6 @@ "@context": "000_context.jsonld", "id": "scenariomip", "type": "activity", - "description": "Future scenario experiments. Exploration of the future climate under a (selected) range of possible boundary conditions", + "description": "Future scenario experiments. Exploration of the future climate under a (selected) range of possible boundary conditions.", "drs_name": "ScenarioMIP" } diff --git a/experiment/esm-scen7-h-ext.json b/experiment/esm-scen7-h-ext.json index fc04c8760..fe5056f38 100644 --- a/experiment/esm-scen7-h-ext.json +++ b/experiment/esm-scen7-h-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-h-ext", "type": "experiment", + "description": "Extension of `esm-scen7-h` beyond 2100.", "drs_name": "esm-scen7-h-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-h` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-h", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-h.json b/experiment/esm-scen7-h.json index 0a4887111..a76b651f7 100644 --- a/experiment/esm-scen7-h.json +++ b/experiment/esm-scen7-h.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-h", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-h`).", "drs_name": "esm-scen7-h", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-hl-ext.json b/experiment/esm-scen7-hl-ext.json index 70ddfd3fb..03470ca2d 100644 --- a/experiment/esm-scen7-hl-ext.json +++ b/experiment/esm-scen7-hl-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-hl-ext", "type": "experiment", + "description": "Extension of `esm-scen7-hl` beyond 2100.", "drs_name": "esm-scen7-hl-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-hl` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-hl", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-hl.json b/experiment/esm-scen7-hl.json index 23109aece..a72c76216 100644 --- a/experiment/esm-scen7-hl.json +++ b/experiment/esm-scen7-hl.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-hl", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP High followed by low (from 2060) emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-hl`).", "drs_name": "esm-scen7-hl", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-l-ext.json b/experiment/esm-scen7-l-ext.json index 5f9d93aec..0f9d0b133 100644 --- a/experiment/esm-scen7-l-ext.json +++ b/experiment/esm-scen7-l-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-l-ext", "type": "experiment", + "description": "Extension of `esm-scen7-l` beyond 2100.", "drs_name": "esm-scen7-l-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-l` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-l", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-l.json b/experiment/esm-scen7-l.json index 8936dd46e..27bb44d36 100644 --- a/experiment/esm-scen7-l.json +++ b/experiment/esm-scen7-l.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-l", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP low emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-l`).", "drs_name": "esm-scen7-l", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-ln-ext.json b/experiment/esm-scen7-ln-ext.json index e0324c318..47d195378 100644 --- a/experiment/esm-scen7-ln-ext.json +++ b/experiment/esm-scen7-ln-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-ln-ext", "type": "experiment", + "description": "Extension of `esm-scen7-ln` beyond 2100.", "drs_name": "esm-scen7-ln-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-ln` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-ln", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-ln.json b/experiment/esm-scen7-ln.json index aeb7c40dd..504e1ed52 100644 --- a/experiment/esm-scen7-ln.json +++ b/experiment/esm-scen7-ln.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-ln", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP low followed by negative (steep reductions begin in 2040, negative from TBD) emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-ln`).", "drs_name": "esm-scen7-ln", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-m-ext.json b/experiment/esm-scen7-m-ext.json index 357a470d7..84d40c722 100644 --- a/experiment/esm-scen7-m-ext.json +++ b/experiment/esm-scen7-m-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-m-ext", "type": "experiment", + "description": "Extension of `esm-scen7-m` beyond 2100.", "drs_name": "esm-scen7-m-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-m` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-m", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-m.json b/experiment/esm-scen7-m.json index f397f601b..bb610cc36 100644 --- a/experiment/esm-scen7-m.json +++ b/experiment/esm-scen7-m.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-m", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-m`).", "drs_name": "esm-scen7-m", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-ml-ext.json b/experiment/esm-scen7-ml-ext.json index 4b52aecc5..87d9033fa 100644 --- a/experiment/esm-scen7-ml-ext.json +++ b/experiment/esm-scen7-ml-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-ml-ext", "type": "experiment", + "description": "Extension of `esm-scen7-ml` beyond 2100.", "drs_name": "esm-scen7-ml-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-ml` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-ml", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-ml.json b/experiment/esm-scen7-ml.json index 7d0c694ea..ac7dd3196 100644 --- a/experiment/esm-scen7-ml.json +++ b/experiment/esm-scen7-ml.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-ml", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium followed by low (from 2040) emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-ml`).", "drs_name": "esm-scen7-ml", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-vl-ext.json b/experiment/esm-scen7-vl-ext.json index 6efd687b4..2c8c26d37 100644 --- a/experiment/esm-scen7-vl-ext.json +++ b/experiment/esm-scen7-vl-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-vl-ext", "type": "experiment", + "description": "Extension of `esm-scen7-vl` beyond 2100.", "drs_name": "esm-scen7-vl-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-scen7-vl` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "esm-scen7-vl", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/esm-scen7-vl.json b/experiment/esm-scen7-vl.json index da0ec3f22..b8dbba514 100644 --- a/experiment/esm-scen7-vl.json +++ b/experiment/esm-scen7-vl.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "esm-scen7-vl", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Run with prescribed carbon dioxide emissions (for prescribed carbon dioxide concentrations, see `scen7-vl`).", "drs_name": "esm-scen7-vl", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", - "chem", - "bgc" + "chem" ], + "branch_information": "Branch from `esm-hist` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "esm-hist", + "parent_mip_era": "cmip7", "required_model_components": [ - "aogcm" - ] -} \ No newline at end of file + "aogcm", + "bgc" + ], + "tier": 1 +} diff --git a/experiment/scen7-h-ext.json b/experiment/scen7-h-ext.json index 16358b8a6..1fe5ed46b 100644 --- a/experiment/scen7-h-ext.json +++ b/experiment/scen7-h-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-h-ext", "type": "experiment", + "description": "Extension of `scen7-h` beyond 2100.", "drs_name": "scen7-h-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-h` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-h", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-h.json b/experiment/scen7-h.json index 59cd5a0c6..f8511e34e 100644 --- a/experiment/scen7-h.json +++ b/experiment/scen7-h.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-h", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-h`).", "drs_name": "scen7-h", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-hl-ext.json b/experiment/scen7-hl-ext.json index 9a2b1ec44..8432c0a21 100644 --- a/experiment/scen7-hl-ext.json +++ b/experiment/scen7-hl-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-hl-ext", "type": "experiment", + "description": "Extension of `scen7-hl` beyond 2100.", "drs_name": "scen7-hl-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-hl` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-hl", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-hl.json b/experiment/scen7-hl.json index 38e083d10..8fd326446 100644 --- a/experiment/scen7-hl.json +++ b/experiment/scen7-hl.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-hl", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP High followed by low (from 2060) emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-hl`).", "drs_name": "scen7-hl", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-l-ext.json b/experiment/scen7-l-ext.json index 987842c60..c3c69a433 100644 --- a/experiment/scen7-l-ext.json +++ b/experiment/scen7-l-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-l-ext", "type": "experiment", + "description": "Extension of `scen7-l` beyond 2100.", "drs_name": "scen7-l-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-l` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-l", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-l.json b/experiment/scen7-l.json index f3a5569a5..e463076e5 100644 --- a/experiment/scen7-l.json +++ b/experiment/scen7-l.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-l", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP low emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-l`).", "drs_name": "scen7-l", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-ln-ext.json b/experiment/scen7-ln-ext.json index 6d1e10f6d..6dc720567 100644 --- a/experiment/scen7-ln-ext.json +++ b/experiment/scen7-ln-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-ln-ext", "type": "experiment", + "description": "Extension of `scen7-ln` beyond 2100.", "drs_name": "scen7-ln-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-ln` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-ln", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-ln.json b/experiment/scen7-ln.json index 9b9c34bd0..2f2c7bbb4 100644 --- a/experiment/scen7-ln.json +++ b/experiment/scen7-ln.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-ln", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP low followed by negative (steep reductions begin in 2040, negative from TBD) emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-ln`).", "drs_name": "scen7-ln", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-m-ext.json b/experiment/scen7-m-ext.json index fc6d1c1a4..a9359446b 100644 --- a/experiment/scen7-m-ext.json +++ b/experiment/scen7-m-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-m-ext", "type": "experiment", + "description": "Extension of `scen7-m` beyond 2100.", "drs_name": "scen7-m-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-m` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-m", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-m.json b/experiment/scen7-m.json index e71e6b4d7..5e30e4866 100644 --- a/experiment/scen7-m.json +++ b/experiment/scen7-m.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-m", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-m`).", "drs_name": "scen7-m", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-ml-ext.json b/experiment/scen7-ml-ext.json index 3f59363a8..d85c01831 100644 --- a/experiment/scen7-ml-ext.json +++ b/experiment/scen7-ml-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-ml-ext", "type": "experiment", + "description": "Extension of `scen7-ml` beyond 2100.", "drs_name": "scen7-ml-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-ml` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-ml", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-ml.json b/experiment/scen7-ml.json index e38be60f1..22923f261 100644 --- a/experiment/scen7-ml.json +++ b/experiment/scen7-ml.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-ml", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium followed by low (from 2040) emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-ml`).", "drs_name": "scen7-ml", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-vl-ext.json b/experiment/scen7-vl-ext.json index 32846e928..e553e2d86 100644 --- a/experiment/scen7-vl-ext.json +++ b/experiment/scen7-vl-ext.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-vl-ext", "type": "experiment", + "description": "Extension of `scen7-vl` beyond 2100.", "drs_name": "scen7-vl-ext", + "start_timestamp": "2101-01-01", + "end_timestamp": "2500-12-31", + "min_number_yrs_per_sim": 50.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `scen7-vl` at 2100-12-31", + "min_ensemble_size": 1, + "parent_activity": "scenariomip", + "parent_experiment": "scen7-vl", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/experiment/scen7-vl.json b/experiment/scen7-vl.json index a00161864..0e1a55637 100644 --- a/experiment/scen7-vl.json +++ b/experiment/scen7-vl.json @@ -2,14 +2,24 @@ "@context": "000_context.jsonld", "id": "scen7-vl", "type": "experiment", + "description": "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future. Run with prescribed carbon dioxide concentrations (for prescribed carbon dioxide emissions, see `esm-scen7-vl`).", "drs_name": "scen7-vl", + "start_timestamp": "2022-01-01", + "end_timestamp": "2100-12-31", + "min_number_yrs_per_sim": 79.0, "activity": "scenariomip", "additional_allowed_model_components": [ "aer", "chem", "bgc" ], + "branch_information": "Branch from `historical` at 2022-01-01.", + "min_ensemble_size": 1, + "parent_activity": "cmip", + "parent_experiment": "historical", + "parent_mip_era": "cmip7", "required_model_components": [ "aogcm" - ] -} \ No newline at end of file + ], + "tier": 1 +} diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 4afbf908a..3e663a0d7 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -193,6 +193,11 @@ def initialise_activities(self) -> "Holder": "https://doi.org/10.5194/cp-19-883-2023", ], ), + ActivityProject( + id="scenariomip", + experiments=[], + urls=["https://doi.org/10.5194/egusphere-2024-3765"], + ), ] def add_experiment_to_activity(self, experiment: ExperimentProject) -> "Holder": @@ -768,6 +773,171 @@ def add_pmip_entries(self) -> "Holder": return self + @staticmethod + def get_scenario_tier(drs_name: str) -> int: + # TODO: update + return 1 + + @staticmethod + def get_scenario_project( + scenario_universe: ExperimentUniverse, + ) -> ExperimentProject: + res = ExperimentProject( + id=scenario_universe.drs_name.lower(), + activity=scenario_universe.activity, + start_timestamp=scenario_universe.start_timestamp, + end_timestamp=scenario_universe.end_timestamp, + min_number_yrs_per_sim=scenario_universe.min_number_yrs_per_sim, + parent_mip_era="cmip7", + tier=scenario_universe.tier, + ) + + return res + + def get_scenario_extension( + self, + scenario: ExperimentUniverse, + ) -> ExperimentUniverse: + res = scenario.model_copy() + + scenario_end_timestamp_dt = datetime.strptime( + scenario.end_timestamp, "%Y-%m-%d" + ) + + extension_start_timestamp = f"{scenario_end_timestamp_dt.year + 1}-01-01" + # TODO: check + extension_end_timestamp = "2500-12-31" + + res.description = f"Extension of `{scenario.drs_name}` beyond {scenario_end_timestamp_dt.year}." + # Unclear to me how this is meant to work. + # scenario ends at 2100-12-31, extensions starts at 2101-01-01. + # Is it an implied join rather than a true overlap + # (like we have for piControl to historical)? + res.branch_information = f"Branch from `{scenario.drs_name}` at {scenario_end_timestamp_dt.strftime('%Y-%m-%d')}" + + res.start_timestamp = extension_start_timestamp + res.end_timestamp = extension_end_timestamp + + res.min_number_yrs_per_sim = 50.0 + res.parent_activity = scenario.activity + res.parent_experiment = scenario.drs_name.lower() + res.drs_name = f"{scenario.drs_name}-ext" + res.tier = self.get_scenario_tier(res.drs_name) + + return res + + @staticmethod + def get_scenario_drs_name(scenario_acronym: str) -> str: + return f"scen7-{scenario_acronym}" + + @staticmethod + def get_scenario_esm_drs_name(scenario_drs_name: str) -> str: + return f"esm-{scenario_drs_name}" + + def get_scenario_esm( + self, + scenario: ExperimentUniverse, + ) -> ExperimentUniverse: + res = scenario.model_copy() + + res.drs_name = self.get_scenario_esm_drs_name(scenario.drs_name) + res.description = ( + scenario.description.replace( + "carbon dioxide concentrations", "carbon dioxide emissions" + ) + .replace("carbon dioxide emissions,", "carbon dioxide concentrations,") + .replace(res.drs_name, scenario.drs_name) + ) + res.required_model_components = ["aogcm", "bgc"] + res.additional_allowed_model_components = ["aer", "chem"] + + if scenario.parent_experiment != "historical": + raise AssertionError + + res.parent_experiment = "esm-hist" + res.branch_information = scenario.branch_information.replace( + scenario.parent_experiment, res.parent_experiment + ) + + res.tier = self.get_scenario_tier(res.drs_name) + + return res + + def add_scenario_entries(self) -> "Holder": + acronym_descriptions = [ + ("vl", "PLACEHOLDER TBC. CMIP7 ScenarioMIP very low emissions future."), + ( + "ln", + "PLACEHOLDER TBC. CMIP7 ScenarioMIP low followed by negative (steep reductions begin in 2040, negative from TBD) emissions future.", + ), + ("l", "PLACEHOLDER TBC. CMIP7 ScenarioMIP low emissions future."), + ( + "ml", + "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium followed by low (from 2040) emissions future.", + ), + ("m", "PLACEHOLDER TBC. CMIP7 ScenarioMIP medium emissions future."), + ( + "hl", + "PLACEHOLDER TBC. CMIP7 ScenarioMIP High followed by low (from 2060) emissions future.", + ), + ("h", "PLACEHOLDER TBC. CMIP7 ScenarioMIP high emissions future."), + ] + + for acronym, description_base in acronym_descriptions: + drs_name = self.get_scenario_drs_name(acronym) + drs_name_esm_scenario = self.get_scenario_esm_drs_name(drs_name) + if "CMIP7 ScenarioMIP" not in description_base: + raise AssertionError(description_base) + + description = ( + f"{description_base} Run with prescribed carbon dioxide concentrations " + f"(for prescribed carbon dioxide emissions, see `{drs_name_esm_scenario}`)." + ) + + univ_base = ExperimentUniverse( + drs_name=drs_name, + description=description, + activity="scenariomip", + additional_allowed_model_components=["aer", "chem", "bgc"], + branch_information="Branch from `historical` at 2022-01-01.", + # TODO: check if 2100-21-31 or 2100-01-01 + end_timestamp="2100-12-31", + min_ensemble_size=1, + min_number_yrs_per_sim=79.0, + parent_activity="cmip", + parent_experiment="historical", + parent_mip_era="cmip7", + required_model_components=["aogcm"], + start_timestamp="2022-01-01", + tier=self.get_scenario_tier(drs_name), + ) + + proj_base = self.get_scenario_project(univ_base) + + self.experiments_universe.append(univ_base) + self.experiments_project.append(proj_base) + self.add_experiment_to_activity(proj_base) + + univ_ext = self.get_scenario_extension(univ_base) + proj_ext = self.get_scenario_project(univ_ext) + self.experiments_universe.append(univ_ext) + self.experiments_project.append(proj_ext) + self.add_experiment_to_activity(proj_ext) + + univ_esm = self.get_scenario_esm(univ_base) + proj_esm = self.get_scenario_project(univ_esm) + self.experiments_universe.append(univ_esm) + self.experiments_project.append(proj_esm) + self.add_experiment_to_activity(proj_esm) + + univ_esm_ext = self.get_scenario_extension(univ_esm) + proj_esm_ext = self.get_scenario_project(univ_esm_ext) + self.experiments_universe.append(univ_esm_ext) + self.experiments_project.append(proj_esm_ext) + self.add_experiment_to_activity(proj_esm_ext) + + 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) @@ -832,6 +1002,7 @@ def main(): holder.add_flat10_entries() holder.add_damip_entries() holder.add_pmip_entries() + holder.add_scenario_entries() holder.write_files(project_root=project_root, universe_root=universe_root) From 642de58e5c8e07763e007eb265b4d441f042ec75 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 22:32:18 +1100 Subject: [PATCH 4/8] Remove files which will be replaced later --- experiment/esm-scen7-h-aer.json | 34 ----------------------------- experiment/esm-scen7-h-aq.json | 35 ------------------------------ experiment/esm-scen7-vlho-aer.json | 33 ---------------------------- experiment/esm-scen7-vlho-aq.json | 35 ------------------------------ 4 files changed, 137 deletions(-) delete mode 100644 experiment/esm-scen7-h-aer.json delete mode 100644 experiment/esm-scen7-h-aq.json delete mode 100644 experiment/esm-scen7-vlho-aer.json delete mode 100644 experiment/esm-scen7-vlho-aq.json diff --git a/experiment/esm-scen7-h-aer.json b/experiment/esm-scen7-h-aer.json deleted file mode 100644 index 73eb0c7a7..000000000 --- a/experiment/esm-scen7-h-aer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@context": "000_context.jsonld", - "id": "esm-scen7-h-aer", - "type": "experiment", - "experiment_id": "esm-scen7-h-Aer", - "activity_id": [ - "aerchemmip" - ], - "additional_allowed_model_components": [ - "aer", - "aogcm", - "chem" - ], - "description": "1. Detailed experiment configuration Future scenario esm-scen7-h with higher aerosol emissions 2. Required model settings We encourage modelling centres to include as much atmospheric composition capability as possible. As a minimum, models should have prescribed or interactive aerosols. And the experimental setup should be consistent with other scenario experiments. 3. Experiment conditions 4. Links to relevant references Fiedler et al. (in prep.) AerChemMIP2 - Unraveling the role of reactive gases, aerosols, and land use for air quality and climate change in CMIP7 5. Similarities to CMIP6 experiments None 6. Forcing differences from parent experiment Increased aerosol emissions compared to parent.", - "end_year": null, - "experiment": "Future scenario esm-scen7-h with high aerosol emissions", - "min_number_yrs_per_sim": "104", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "esm-hist" - ], - "required_model_components": [ - "aer", - "aogcm" - ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-scen7-h-Aer" -} \ No newline at end of file diff --git a/experiment/esm-scen7-h-aq.json b/experiment/esm-scen7-h-aq.json deleted file mode 100644 index 7abd4410b..000000000 --- a/experiment/esm-scen7-h-aq.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@context": "000_context.jsonld", - "id": "esm-scen7-h-aq", - "type": "experiment", - "experiment_id": "esm-scen7-h-AQ", - "activity_id": [ - "aerchemmip" - ], - "additional_allowed_model_components": [ - "aer", - "aogcm", - "chem" - ], - "description": "1. Detailed experiment configuration Future scenario esm-scen7-h with higher aerosol and tropospheric non-methane ozone precursor emissions 2. Required model settings We encourage modelling centres to include as much atmospheric composition capability as possible. But, as a minimum, models should have tropospheric chemistry and interactive aerosols. And the experimental setup should be consistent with other scenario experiments. 3. Experiment conditions 4. Links to relevant references Fiedler et al. (in prep.) AerChemMIP2 - Unraveling the role of reactive gases, aerosols, and land use for air quality and climate change in CMIP7 5. Similarities to CMIP6 experiments None 6. Forcing differences from parent experiment Increased aerosol and tropospheric non-methane ozone precursor emissions compared to parent.", - "end_year": null, - "experiment": "Future scenario esm-scen7-h with high aerosol and tropospheric non-methane ozone precursor emissions", - "min_number_yrs_per_sim": "104", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "esm-hist" - ], - "required_model_components": [ - "aer", - "aogcm", - "chem" - ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-scen7-h-AQ" -} \ No newline at end of file diff --git a/experiment/esm-scen7-vlho-aer.json b/experiment/esm-scen7-vlho-aer.json deleted file mode 100644 index 045553e5d..000000000 --- a/experiment/esm-scen7-vlho-aer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@context": "000_context.jsonld", - "id": "esm-scen7-vlho-aer", - "type": "experiment", - "experiment_id": "esm-scen7-vlho-Aer", - "activity_id": [ - "aerchemmip" - ], - "additional_allowed_model_components": [ - "aer", - "aogcm" - ], - "description": "1. Detailed experiment configuration Future scenario esm-scen7-vlho with higher aerosol emissions 2. Required model settings We encourage modelling centres to include as much atmospheric composition capability as possible. As a minimum, models should have prescribed or interactive aerosols. And the experimental setup should be consistent with other scenario experiments. 3. Experiment conditions 4. Links to relevant references Fiedler et al. (in prep.) AerChemMIP2 - Unraveling the role of reactive gases, aerosols, and land use for air quality and climate change in CMIP7 5. Similarities to CMIP6 experiments None 6. Forcing differences from parent experiment Increased aerosol emissions compared to parent.", - "end_year": null, - "experiment": "Future scenario esm-scen7-vlho with high aerosol emissions", - "min_number_yrs_per_sim": "104", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "esm-hist" - ], - "required_model_components": [ - "aer", - "aogcm" - ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-scen7-vlho-Aer" -} \ No newline at end of file diff --git a/experiment/esm-scen7-vlho-aq.json b/experiment/esm-scen7-vlho-aq.json deleted file mode 100644 index 14720563f..000000000 --- a/experiment/esm-scen7-vlho-aq.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@context": "000_context.jsonld", - "id": "esm-scen7-vlho-aq", - "type": "experiment", - "experiment_id": "esm-scen7-vlho-AQ", - "activity_id": [ - "aerchemmip" - ], - "additional_allowed_model_components": [ - "aer", - "aogcm", - "chem" - ], - "description": "1. Detailed experiment configuration Future scenario esm-scen7-vlho with higher aerosol and tropospheric non-methane ozone precursor emissions 2. Required model settings We encourage modelling centres to include as much atmospheric composition capability as possible. But, as a minimum, models should have tropospheric chemistry and interactive aerosols. And the experimental setup should be consistent with other scenario experiments. 3. Experiment conditions 4. Links to relevant references Fiedler et al. (in prep.) AerChemMIP2 - Unraveling the role of reactive gases, aerosols, and land use for air quality and climate change in CMIP7 5. Similarities to CMIP6 experiments none 6. Forcing differences from parent experiment Increased aerosol and ozone precursor emissions compared to parent.", - "end_year": null, - "experiment": "Future scenario esm-scen7-vlho with high aerosol and tropospheric non-methane ozone precursor emissions", - "min_number_yrs_per_sim": "104", - "parent_activity_id": [ - "cmip" - ], - "parent_experiment_id": [ - "esm-hist" - ], - "required_model_components": [ - "aer", - "aogcm", - "chem" - ], - "start_year": null, - "sub_experiment_id": [ - "none" - ], - "tier": "1", - "drs_name": "esm-scen7-vlho-AQ" -} \ No newline at end of file From f4188450b1eceec4b68b9b36f3332b2c5c3250b3 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Wed, 3 Dec 2025 22:33:11 +1100 Subject: [PATCH 5/8] Update aerchemmip entry --- activity/aerchemmip.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/activity/aerchemmip.json b/activity/aerchemmip.json index 4bc746b1c..1d35b74ed 100644 --- a/activity/aerchemmip.json +++ b/activity/aerchemmip.json @@ -1,10 +1,7 @@ { "@context": "000_context.jsonld", - "type": "activity", "id": "aerchemmip", - "name": "AerChemMIP", - "cmip_acronym": "AerChemMIP", - "long_name": "Aerosols and Chemistry Model Intercomparison Project", - "url": null, + "type": "activity", + "description": "Aerosols and chemistry model intercomparison project: exploration of aerosol chemistry.", "drs_name": "AerChemMIP" -} \ No newline at end of file +} From e1a5e3c0bbbb7c46866f4ea65b0a00d6ca0ef851 Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Fri, 12 Dec 2025 08:54:55 +1100 Subject: [PATCH 6/8] Remove TODO re end of year --- scripts/generate-experiments.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 3e663a0d7..32344ce7c 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -900,7 +900,6 @@ def add_scenario_entries(self) -> "Holder": activity="scenariomip", additional_allowed_model_components=["aer", "chem", "bgc"], branch_information="Branch from `historical` at 2022-01-01.", - # TODO: check if 2100-21-31 or 2100-01-01 end_timestamp="2100-12-31", min_ensemble_size=1, min_number_yrs_per_sim=79.0, From d1798dffc30b580fe67be7b5d75c550ec333037e Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Fri, 12 Dec 2025 08:55:22 +1100 Subject: [PATCH 7/8] Remove TODO re extension end year --- scripts/generate-experiments.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index 32344ce7c..bb998fda4 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -805,7 +805,6 @@ def get_scenario_extension( ) extension_start_timestamp = f"{scenario_end_timestamp_dt.year + 1}-01-01" - # TODO: check extension_end_timestamp = "2500-12-31" res.description = f"Extension of `{scenario.drs_name}` beyond {scenario_end_timestamp_dt.year}." From 2545f0f34bde3c08a4a9e00481020082a6f2507b Mon Sep 17 00:00:00 2001 From: Zebedee Nicholls Date: Fri, 12 Dec 2025 09:07:46 +1100 Subject: [PATCH 8/8] Add ScenarioMIP tiers --- scripts/generate-experiments.py | 37 ++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/scripts/generate-experiments.py b/scripts/generate-experiments.py index bb998fda4..4a4440457 100644 --- a/scripts/generate-experiments.py +++ b/scripts/generate-experiments.py @@ -129,6 +129,7 @@ class ActivityProject(BaseModel): id: str experiments: list[str] urls: list[str] + description: str = "dont_write" def write_file(self, project_root: Path) -> None: content = { @@ -138,6 +139,10 @@ def write_file(self, project_root: Path) -> None: "experiments": sorted(self.experiments), "urls": sorted(self.urls), } + for attr in ("description",): + val = getattr(self, attr) + if val != "dont_write": + content[attr] = val out_file = str(project_root / "activity" / f"{self.id}.json") write_file(out_file, content) @@ -197,6 +202,18 @@ def initialise_activities(self) -> "Holder": id="scenariomip", experiments=[], urls=["https://doi.org/10.5194/egusphere-2024-3765"], + description=( + "Future scenario experiments. " + "Exploration of the future climate under a (selected) range of possible boundary conditions. " + "In CMIP7, the priority tier for experiments is conditional on whether you are doing emissions- or concentration-driven simulations. " + "There is no way to express this in the CVs (nor time to implement something to handle this conditionality). " + "This means that, for your particular situation, some experiments may be at a lower tier than is listed in the CVs. " + "For example, the `vl` scenario is tier 1 for concentration-driven models " + "and tier 2 for emissions-driven models. " + "However, in the CVs, we have used the highest priority tier (across all the possible conditionalities). " + "Hence `vl` is listed as tier 1 in the CVs (even though it is actually tier 2 for emissions-driven models)." + "For details, please see the full description in the ScenarioMIP description papers." + ), ), ] @@ -775,7 +792,25 @@ def add_pmip_entries(self) -> "Holder": @staticmethod def get_scenario_tier(drs_name: str) -> int: - # TODO: update + # A bit stupid, because in practice everything ends up being tier 1, + # but ok at least we have the logic clarified now + # (and can explain why it says this in the CVs if anyone asks). + if drs_name.startswith("esm-"): + # All standard scenarios are tier 1 for emissions-driven models + return 1 + + if any(v in drs_name for v in ("-vl-", "-h-")): + # vl and h are tier 1 for experiments and extensions + return 1 + + if drs_name.endswith("-ext"): + # Extensions are tier 1 up to 2150. + # We can't express tier 1 up to 2150 and tier 2 otherwise + # (we do that instead with min_number_yrs_per_sim) + # so everything is just tier 1. + return 1 + + # If we get here, we are looking at concentration-driven experiments return 1 @staticmethod