diff --git a/.github/workflows/pull_request_ci.yml b/.github/workflows/pull_request_ci.yml
index c951b99..05b2326 100644
--- a/.github/workflows/pull_request_ci.yml
+++ b/.github/workflows/pull_request_ci.yml
@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.x"
@@ -34,7 +34,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Install dependencies
run: |
@@ -50,10 +50,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.x"
@@ -74,10 +74,10 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.x"
@@ -95,10 +95,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.x"
diff --git a/CODEOWNERS b/CODEOWNERS
index e18cb07..00a73ca 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -3,7 +3,7 @@
# These owners will be the default owners for everything in the repo.
-* @cacraigucar @climbfuji @dustinswales @grantfirl @mattldawson @mkavulich @mwaxmonsky @nusbaume @peverwhee @MarekWlasak @svahl991 @ss421
+* @cacraigucar @climbfuji @dustinswales @grantfirl @mattldawson @mkavulich @nusbaume @peverwhee @MarekWlasak @svahl991 @ss421
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
diff --git a/Metadata-standard-names.md b/Metadata-standard-names.md
index 1d7cab8..cec5fe0 100644
--- a/Metadata-standard-names.md
+++ b/Metadata-standard-names.md
@@ -286,8 +286,14 @@ Names indicating the size, extent, or bounds of data structures in a model.
* `real`: units = 1
* `upper_bound_of_vertical_dimension_of_surface_snow`: upper bound of of snow-related arrays for land surface model
* `integer`: units = count
+* `vertical_dimension`: number of vertical layers
+ * `integer`: units = count
+* `vertical_dimension_extended_up_by_1`: number of vertical layers extended up by 1
+ * `integer`: units = count
* `vertical_dimension_for_radiation`: Vertical dimension for radiation
* `integer`: units = count
+* `vertical_dimension_minus_one`: Vertical dimension minus one
+ * `integer`: units = count
* `vertical_dimension_of_sea_ice`: Vertical dimension of sea ice
* `integer`: units = count
* `vertical_dimension_of_soil`: Vertical dimension of soil
@@ -302,12 +308,6 @@ Names indicating the size, extent, or bounds of data structures in a model.
* `integer`: units = count
* `vertical_interface_dimension_interstitial`: Vertical interface dimension interstitial
* `integer`: units = count
-* `vertical_layer_dimension`: number of vertical layers
- * `integer`: units = count
-* `vertical_layer_dimension_extended_up_by_1`: number of vertical layers extended up by 1
- * `integer`: units = count
-* `vertical_layer_dimension_minus_one`: Vertical layer dimension minus one
- * `integer`: units = count
## Constants
Constant parameters that should be identical across a full modeling system
* `avogadro_number`: Avogadro number
@@ -398,7 +398,7 @@ Variables defining or relating to timing, dates, calendar, and related concepts
* `real`: units = Pa
* `air_pressure_at_lowest_model_interface`: Air pressure at lowest model interface
* `real`: units = Pa
-* `air_pressure_at_sea_level`: Air pressure at sea level
+* `air_pressure_at_mean_sea_level`: Air pressure at mean sea level
* Equivalent CF name: `air_pressure_at_mean_sea_level`
* `real`: units = Pa
* `air_pressure_at_surface`: Air pressure at local surface
@@ -579,7 +579,7 @@ Variables defining or relating to timing, dates, calendar, and related concepts
* `upward_heat_flux_in_air_at_surface`: Upward heat flux in air at surface
* Equivalent CF name: `surface_upward_heat_flux_in_air`
* `real`: units = W m-2
-* `us_standard_air_pressure_at_sea_level`: US Standard Atmospheric pressure at sea level
+* `us_standard_air_pressure_at_mean_sea_level`: US Standard Atmospheric pressure at sea level
* `real`: units = Pa
* `variance_of_air_temperature`: Variance of air temperature
* `real`: units = K2
@@ -2434,6 +2434,8 @@ Thresholds represent some value at which the behavior of some process changes, i
* `volume_fraction_of_condensed_water_in_soil`: Volume fraction of condensed water in soil
* Equivalent CF name: `volume_fraction_of_condensed_water_in_soil`
* `real`: units = fraction
+* `volume_fraction_of_equilibrium_soil_moisture`: Volume fraction of equilibrium soil moisture
+ * `real`: units = fraction
* `volume_fraction_of_frozen_soil_moisture_for_lsm`: Volume fraction of frozen soil moisture for land surface model
* `real`: units = fraction
* `volume_fraction_of_liquid_water_in_soil_at_critical_point`: volume fraction of water in liquid phase in soil at critical point
@@ -2442,16 +2444,14 @@ Thresholds represent some value at which the behavior of some process changes, i
* `real`: units = m3 m-3
* `volume_fraction_of_liquid_water_in_soil_at_wilting_point`: volume fraction of water in liquid phase in soil at wilting point
* `real`: units = m3 m-3
+* `volume_fraction_of_soil_moisture_between_soil_bottom_and_water_table`: Volume fraction of soil moisture between soil bottom and water table
+ * `real`: units = fraction
* `volume_fraction_of_soil_moisture_for_lsm`: Volume fraction of soil moisture for land surface model
* `real`: units = fraction
* `volume_fraction_of_unfrozen_soil_moisture_for_lsm`: Volume fraction of unfrozen soil moisture for land surface model
* `real`: units = fraction
* `volume_fraction_of_unfrozen_water_in_soil`: Volume fraction of unfrozen water in soil
* `real`: units = fraction
-* `volumetric_equilibrium_soil_moisture`: Volumetric equilibrium soil moisture
- * `real`: units = m3 m-3
-* `volumetric_soil_moisture_between_soil_bottom_and_water_table`: Volumetric soil moisture between soil bottom and water table
- * `real`: units = m3 m-3
* `water_storage_in_aquifer`: Water storage in aquifer
* `real`: units = mm
* `water_storage_in_aquifer_and_saturated_soil`: Water storage in aquifer and saturated soil
diff --git a/Metadata-standard-names.yaml b/Metadata-standard-names.yaml
index 72cff48..c5fc9b2 100644
--- a/Metadata-standard-names.yaml
+++ b/Metadata-standard-names.yaml
@@ -536,10 +536,22 @@ section:
description: upper bound of of snow-related arrays for land surface model
type: integer
units: count
+ - name: vertical_dimension
+ description: number of vertical layers
+ type: integer
+ units: count
+ - name: vertical_dimension_extended_up_by_1
+ description: number of vertical layers extended up by 1
+ type: integer
+ units: count
- name: vertical_dimension_for_radiation
description: Vertical dimension for radiation
type: integer
units: count
+ - name: vertical_dimension_minus_one
+ description: Vertical dimension minus one
+ type: integer
+ units: count
- name: vertical_dimension_of_sea_ice
description: Vertical dimension of sea ice
type: integer
@@ -568,18 +580,6 @@ section:
description: Vertical interface dimension interstitial
type: integer
units: count
- - name: vertical_layer_dimension
- description: number of vertical layers
- type: integer
- units: count
- - name: vertical_layer_dimension_extended_up_by_1
- description: number of vertical layers extended up by 1
- type: integer
- units: count
- - name: vertical_layer_dimension_minus_one
- description: Vertical layer dimension minus one
- type: integer
- units: count
- name: Constants
comment: Constant parameters that should be identical across a full modeling system
standard_names:
@@ -758,9 +758,9 @@ section:
description: Air pressure at lowest model interface
type: real
units: Pa
- - name: air_pressure_at_sea_level
+ - name: air_pressure_at_mean_sea_level
cfname: air_pressure_at_mean_sea_level
- description: Air pressure at sea level
+ description: Air pressure at mean sea level
type: real
units: Pa
- name: air_pressure_at_surface
@@ -1121,7 +1121,7 @@ section:
description: Upward heat flux in air at surface
type: real
units: W m-2
- - name: us_standard_air_pressure_at_sea_level
+ - name: us_standard_air_pressure_at_mean_sea_level
description: US Standard Atmospheric pressure at sea level
type: real
units: Pa
@@ -5049,6 +5049,10 @@ section:
description: Volume fraction of condensed water in soil
type: real
units: fraction
+ - name: volume_fraction_of_equilibrium_soil_moisture
+ description: Volume fraction of equilibrium soil moisture
+ type: real
+ units: fraction
- name: volume_fraction_of_frozen_soil_moisture_for_lsm
description: Volume fraction of frozen soil moisture for land surface model
type: real
@@ -5065,6 +5069,10 @@ section:
description: volume fraction of water in liquid phase in soil at wilting point
type: real
units: m3 m-3
+ - name: volume_fraction_of_soil_moisture_between_soil_bottom_and_water_table
+ description: Volume fraction of soil moisture between soil bottom and water table
+ type: real
+ units: fraction
- name: volume_fraction_of_soil_moisture_for_lsm
description: Volume fraction of soil moisture for land surface model
type: real
@@ -5077,14 +5085,6 @@ section:
description: Volume fraction of unfrozen water in soil
type: real
units: fraction
- - name: volumetric_equilibrium_soil_moisture
- description: Volumetric equilibrium soil moisture
- type: real
- units: m3 m-3
- - name: volumetric_soil_moisture_between_soil_bottom_and_water_table
- description: Volumetric soil moisture between soil bottom and water table
- type: real
- units: m3 m-3
- name: water_storage_in_aquifer
description: Water storage in aquifer
type: real
diff --git a/StandardNamesRules.rst b/StandardNamesRules.rst
index 9212b6a..7fc6b90 100644
--- a/StandardNamesRules.rst
+++ b/StandardNamesRules.rst
@@ -544,6 +544,8 @@ Special phrases
+------------------------+-------------------------------------------------------------------------------------+
| frozen_water | ice |
+------------------------+-------------------------------------------------------------------------------------+
+| interface | The vertical boundary of a model layer. |
++------------------------+-------------------------------------------------------------------------------------+
| longwave | Longwave radiation. Defined as thermal emission of radiation from the planet. |
+------------------------+-------------------------------------------------------------------------------------+
| moisture | water in all phases contained in soil |
diff --git a/standard_names.xml b/standard_names.xml
index c3a41db..1f2565f 100644
--- a/standard_names.xml
+++ b/standard_names.xml
@@ -401,9 +401,18 @@
integer
+
+ integer
+
+
+ integer
+
integer
+
+ integer
+
integer
@@ -425,15 +434,6 @@
integer
-
- integer
-
-
- integer
-
-
- integer
-
@@ -564,7 +564,7 @@
real
-
+
air_pressure_at_mean_sea_level
real
@@ -829,7 +829,7 @@
surface_upward_heat_flux_in_air
real
-
+
real
@@ -3588,6 +3588,9 @@
volume_fraction_of_condensed_water_in_soil
real
+
+ real
+
real
@@ -3600,6 +3603,9 @@
real
+
+ real
+
real
@@ -3609,12 +3615,6 @@
real
-
- real
-
-
- real
-
real
diff --git a/tools/lib/xml_tools.py b/tools/lib/xml_tools.py
index 70ec007..7f64332 100644
--- a/tools/lib/xml_tools.py
+++ b/tools/lib/xml_tools.py
@@ -64,26 +64,20 @@ def validate_xml_file(filename, schema_file, logger, error_on_noxmllint=False):
"""
# Check the filename
if not os.path.isfile(filename):
- raise ValueError(f"validate_xml_file: Filename, '{filename}', does not exist")
- if not os.access(filename, os.R_OK):
- raise ValueError(f"validate_xml_file: Cannot open '{filename}'")
+ raise FileNotFoundError(f"validate_xml_file: Filename, '{filename}', does not exist")
if not os.path.isfile(schema_file):
- raise ValueError(f"validate_xml_file: Cannot find schema file {schema_file}")
- if not os.access(schema_file, os.R_OK):
- emsg = "validate_xml_file: Cannot open schema, '{}'"
- raise ValueError(emsg.format(schema_file))
+ raise FileNotFoundError(f"validate_xml_file: Cannot find schema file {schema_file}")
if _XMLLINT is not None:
if logger is not None:
- lmsg = "Checking file {} against schema {}"
- logger.debug(lmsg.format(filename, schema_file))
+ logger.debug(f"Checking file {filename} against schema {schema_file}")
cmd = [_XMLLINT, '--noout', '--schema', schema_file, filename]
result = call_command(cmd, logger)
return result
- lmsg = "xmllint not found, could not validate file {}"
+ lmsg = f"xmllint not found, could not validate file {filename}"
if error_on_noxmllint:
- raise ValueError("validate_xml_file: " + lmsg.format(filename))
+ raise ImportError("validate_xml_file: " + lmsg)
if logger is not None:
- logger.warning(lmsg.format(filename))
+ logger.warning(lmsg)
return True # We could not check but still need to proceed
###############################################################################
diff --git a/tools/write_standard_name_table.py b/tools/write_standard_name_table.py
index aca4040..72a5f80 100755
--- a/tools/write_standard_name_table.py
+++ b/tools/write_standard_name_table.py
@@ -148,8 +148,7 @@ def parse_section(snl, sec, level='##'):
units = item.get('units')
snl.write(f' * `{txt}`: units = {units}\n')
else:
- emsg = "Unknown standard name property, '{}'"
- raise ValueError(emsg.format(item.tag))
+ raise ValueError(f"Unknown standard name property, '{item.tag}'")
def convert_xml_to_yaml(root, library_name, yaml_file):