@@ -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