Top-level model description (EMD v1.0 Section 2). The following properties provide a top-level description of the model as a whole.
Quick Reference¶
| Type URI | emd:model |
| Entries | 1 |
| Validation | ✓ Validated |
| Pydantic Model | Model |
| JSON-LD | emd:model |
| Source | View on GitHub |
| Contribute | Submit or Edit |
| Generated | 2026-02-22 |
Schema¶
The JSON structure and validation for this vocabulary is defined using the Model Pydantic model in esgvoc. This ensures data consistency and provides automatic validation of all entries. Click field name for description.
Required Fields¶
| Field | Type | Constraints | References |
|---|---|---|---|
| name | str |
min_length=1 | - |
| calendar | List[str | Calendar] |
min_length=1 | calendar |
| dynamic_components | List[str | ComponentType] |
min_length=1 | ComponentType, component |
| family | str |
min_length=1 | - |
| model_components | List[str | EMDModelComponent] |
- | - |
| references | List[str | Reference] |
min_length=1 | - |
| release_year | int |
min=1900, max=2100 | - |
Optional Fields¶
| Field | Type | Constraints | References |
|---|---|---|---|
| description | str |
min_length=1 | - |
| omitted_components | List[str | ComponentType] |
- | ComponentType, component |
| prescribed_components | List[str | ComponentType] |
- | ComponentType, component |
Field Descriptions¶
Description¶
A scientific overview of the top-level model. The description should include a brief mention of all the components listed in the 7.1 component CV, whether dynamically simulated, prescribed, or omitted.
Validation: validate_non_empty_strings [source]
Validate that string fields are not empty.
Name¶
The name of the top-level model. For CMIP7, this name will be registered as the model's source_id.
Validation: validate_non_empty_strings [source]
Validate that string fields are not empty.
Calendar¶
The calendar, or calendars, that define which dates are permitted in the top-level model. Taken from 7.2 calendar CV.
Validation: validate_calendar_list [source]
Validate calendar list contains valid strings or Calendar objects.
def validate_calendar_list(cls, v):
"""Validate calendar list contains valid strings or Calendar objects."""
if not v:
raise ValueError("At least one calendar must be specified")
# Filter out empty strings, keep Calendar objects
cleaned = []
for item in v:
if isinstance(item, str):
if item.strip():
cleaned.append(item.strip())
else:
cleaned.append(item)
if not cleaned:
raise ValueError("Calendar list cannot be empty")
return cleaned
Dynamic Components¶
The model components that are dynamically simulated within the top-level model. Taken from 7.1 component CV.
Validation: validate_component_lists [source]
Validate component lists contain valid strings or ComponentType objects.
def validate_component_lists(cls, v):
"""Validate component lists contain valid strings or ComponentType objects."""
if v is None:
return []
# Filter out empty strings, keep ComponentType objects
cleaned = []
for item in v:
if isinstance(item, str):
if item.strip():
cleaned.append(item.strip())
else:
cleaned.append(item)
return cleaned
Family¶
The top-level model's 'family' name. Use 'none' to indicate that there is no such family.
Validation: validate_non_empty_strings [source]
Validate that string fields are not empty.
Model Components¶
The model components that dynamically simulate processes within the model.
Validation: validate_same_dynamic_components [source]
Validate that model_components has the same length as dynamic_components.
def validate_same_dynamic_components(cls, v, info):
"""Validate that model_components has the same length as dynamic_components."""
if "dynamic_components" in info.data:
dynamic_components = info.data["dynamic_components"]
if len(v) != len(dynamic_components):
raise ValueError(
f"Number of model_components ({len(v)}) must equal number of dynamic_components({len(dynamic_components)})"
)
return v
Omitted Components¶
The components that are wholly omitted from the top-level model. Taken from 7.1 component CV.
Validation: validate_component_lists [source]
Validate component lists contain valid strings or ComponentType objects.
def validate_component_lists(cls, v):
"""Validate component lists contain valid strings or ComponentType objects."""
if v is None:
return []
# Filter out empty strings, keep ComponentType objects
cleaned = []
for item in v:
if isinstance(item, str):
if item.strip():
cleaned.append(item.strip())
else:
cleaned.append(item)
return cleaned
Prescribed Components¶
The components that are represented in the top-level model with prescribed values. Taken from 7.1 component CV.
Validation: validate_component_lists [source]
Validate component lists contain valid strings or ComponentType objects.
def validate_component_lists(cls, v):
"""Validate component lists contain valid strings or ComponentType objects."""
if v is None:
return []
# Filter out empty strings, keep ComponentType objects
cleaned = []
for item in v:
if isinstance(item, str):
if item.strip():
cleaned.append(item.strip())
else:
cleaned.append(item)
return cleaned
References¶
One or more references to published work for the top-level model as a whole.
Release Year¶
The year in which the top-level model being documented was released, or first used for published simulations.
Usage¶
Direct Access:
Python (cmipld):
Python (esgvoc):