Skip to content

Commit 2545f0f

Browse files
committed
Add ScenarioMIP tiers
1 parent d1798df commit 2545f0f

1 file changed

Lines changed: 36 additions & 1 deletion

File tree

scripts/generate-experiments.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class ActivityProject(BaseModel):
129129
id: str
130130
experiments: list[str]
131131
urls: list[str]
132+
description: str = "dont_write"
132133

133134
def write_file(self, project_root: Path) -> None:
134135
content = {
@@ -138,6 +139,10 @@ def write_file(self, project_root: Path) -> None:
138139
"experiments": sorted(self.experiments),
139140
"urls": sorted(self.urls),
140141
}
142+
for attr in ("description",):
143+
val = getattr(self, attr)
144+
if val != "dont_write":
145+
content[attr] = val
141146

142147
out_file = str(project_root / "activity" / f"{self.id}.json")
143148
write_file(out_file, content)
@@ -197,6 +202,18 @@ def initialise_activities(self) -> "Holder":
197202
id="scenariomip",
198203
experiments=[],
199204
urls=["https://doi.org/10.5194/egusphere-2024-3765"],
205+
description=(
206+
"Future scenario experiments. "
207+
"Exploration of the future climate under a (selected) range of possible boundary conditions. "
208+
"In CMIP7, the priority tier for experiments is conditional on whether you are doing emissions- or concentration-driven simulations. "
209+
"There is no way to express this in the CVs (nor time to implement something to handle this conditionality). "
210+
"This means that, for your particular situation, some experiments may be at a lower tier than is listed in the CVs. "
211+
"For example, the `vl` scenario is tier 1 for concentration-driven models "
212+
"and tier 2 for emissions-driven models. "
213+
"However, in the CVs, we have used the highest priority tier (across all the possible conditionalities). "
214+
"Hence `vl` is listed as tier 1 in the CVs (even though it is actually tier 2 for emissions-driven models)."
215+
"For details, please see the full description in the ScenarioMIP description papers."
216+
),
200217
),
201218
]
202219

@@ -775,7 +792,25 @@ def add_pmip_entries(self) -> "Holder":
775792

776793
@staticmethod
777794
def get_scenario_tier(drs_name: str) -> int:
778-
# TODO: update
795+
# A bit stupid, because in practice everything ends up being tier 1,
796+
# but ok at least we have the logic clarified now
797+
# (and can explain why it says this in the CVs if anyone asks).
798+
if drs_name.startswith("esm-"):
799+
# All standard scenarios are tier 1 for emissions-driven models
800+
return 1
801+
802+
if any(v in drs_name for v in ("-vl-", "-h-")):
803+
# vl and h are tier 1 for experiments and extensions
804+
return 1
805+
806+
if drs_name.endswith("-ext"):
807+
# Extensions are tier 1 up to 2150.
808+
# We can't express tier 1 up to 2150 and tier 2 otherwise
809+
# (we do that instead with min_number_yrs_per_sim)
810+
# so everything is just tier 1.
811+
return 1
812+
813+
# If we get here, we are looking at concentration-driven experiments
779814
return 1
780815

781816
@staticmethod

0 commit comments

Comments
 (0)