Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions experiment/esm-scen7-h-aer.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/esm-scen7-h-aq.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/esm-scen7-vl-aer.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/esm-scen7-vl-aq.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/scen7-h-aer.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/scen7-h-aq.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/scen7-vl-aer.json
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions experiment/scen7-vl-aq.json
Original file line number Diff line number Diff line change
@@ -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
}
83 changes: 83 additions & 0 deletions scripts/generate-experiments.py
Original file line number Diff line number Diff line change
Expand Up @@ -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=[],
Expand Down Expand Up @@ -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.
Comment on lines +1067 to +1068
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure who to ask about this

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bethdingley only question is here. I couldn't figure out what hist-piAQ was meant to be...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From the AerChemMIP paper:
hist-piAQ, where anthropogenic SLCF emissions contributing to air pollution are set at PI levels [...] The experiment hist-piAQ is the same as hist-piNTCF from AerChemMIP phase one (Collins et al., 2017) except the new name accurately reflects the experimental protocol wherein air pollutant emissions, including non-CH4 tropospheric O3 precursors, aerosols and their precursor emissions (BC, OC, NH3 and SO2) are set to PI levels. The experiment hist-piAQ can be used to diagnose the climate and air quality responses to the regionally heterogeneous evolution of anthropogenic nonCH4 SLCF emissions. [...] Models which can simulate SLCFs other than aerosols (i.e., CHEM) should perform hist-piAQ while models without such capability (i.e., AER) are asked to perform hist-piAer.

Does this answer your questions? If not, we can tag AerChemMIP for more details

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this answer your questions?

Not really. What I'm trying to figure out is whether these are meant to have prescribed SSTs or not (this hist-pi* naming is unique in Dunne et al so hard to know whether it's its own thing or a typo).

@fmoconnor do you know anything about these hist-piAQ and hist-piAer experiments? Are they like the piClim* experiments with prescribed SSTs or like the DAMIP experiments (i.e. freely evolving SSTs)?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, Dunne et al (https://gmd.copernicus.org/articles/18/6671/2025/gmd-18-6671-2025.pdf) Table 3 suggests that 6 ensemble members are required. Is that correct?


def add_geomip_entries(self) -> "Holder":
for (
drs_name,
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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)
Expand Down