From f7ebc26c73ad8733db6e1e52bc2d8b32455e002b Mon Sep 17 00:00:00 2001 From: MayeulDestouches Date: Wed, 3 Apr 2024 17:49:33 +0100 Subject: [PATCH 1/5] Explicit vertical stagger suffixes --- StandardNamesRules.rst | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/StandardNamesRules.rst b/StandardNamesRules.rst index 2419aa3..aabb530 100644 --- a/StandardNamesRules.rst +++ b/StandardNamesRules.rst @@ -53,9 +53,22 @@ CCPP Standard Name Rules #. By default (when not specified otherwise), variables are grid means or centers (defined by the host). If a variable is defined at a different physical location, - a qualifier should be used to denote this. For example, for variables - representing quantities at the interface between grid cells vertically, - use at_interface. + a qualifier should be used to denote this. For example, to specify the vertical + location of a variable with respect to vertical grid cells, the following rules + apply. If ``[variable]`` doesn't have a vertical location suffix and is defined + on `n` levels: + + * ``[variable]_at_interface`` is defined at the interfaces between grid cells + vertically, including the bottom-most and top-most interfaces. It is defined on + `n+1` levels. + + * ``[variable]_at_top_interfaces`` is defined at the interfaces between grid + cells vertically, including the top-most interface *but excluding the + bottom-most interface*. It is defined on `n` levels. + + * ``[variable]_at_bottom_interfaces`` is defined at the interfaces between grid + cells vertically, including the bottom-most interface *but excluding the + top-most interface*. It is defined on `n` levels. #. By default, *mixing_ratio* refers to mass mixing ratios. The long name should explicitly specify that it refers to the *mass* mixing ratio. From ab67e6c59d9e4e2b7200952d645d51495a3f1086 Mon Sep 17 00:00:00 2001 From: MayeulDestouches Date: Fri, 5 Apr 2024 13:34:12 +0100 Subject: [PATCH 2/5] Clarify number of levels --- StandardNamesRules.rst | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/StandardNamesRules.rst b/StandardNamesRules.rst index aabb530..982249f 100644 --- a/StandardNamesRules.rst +++ b/StandardNamesRules.rst @@ -54,21 +54,26 @@ CCPP Standard Name Rules #. By default (when not specified otherwise), variables are grid means or centers (defined by the host). If a variable is defined at a different physical location, a qualifier should be used to denote this. For example, to specify the vertical - location of a variable with respect to vertical grid cells, the following rules - apply. If ``[variable]`` doesn't have a vertical location suffix and is defined - on `n` levels: + location of a variable with respect to vertical grid cells, the following variants + are possible: - * ``[variable]_at_interface`` is defined at the interfaces between grid cells - vertically, including the bottom-most and top-most interfaces. It is defined on - `n+1` levels. + * ``[variable]``, with no location suffix, is defined at vertical-cell centers or + as vertical-cell averages. - * ``[variable]_at_top_interfaces`` is defined at the interfaces between grid - cells vertically, including the top-most interface *but excluding the - bottom-most interface*. It is defined on `n` levels. + * ``[variable]_at_interface`` is defined at the interfaces between grid cells + vertically, including the bottom-most and top-most interfaces. + * ``[variable]_at_top_interfaces`` is defined at the interfaces between grid cells + vertically, including the top-most interface *but excluding the bottom-most + interface*. * ``[variable]_at_bottom_interfaces`` is defined at the interfaces between grid cells vertically, including the bottom-most interface *but excluding the - top-most interface*. It is defined on `n` levels. + top-most interface*. + + This implies that if ``[variable]`` is defined on `n` points vertically, + ``[variable]_at_interface`` is defined on `n+1` points, + ``[variable]_at_top_interfaces`` is defined on `n` points, and + ``[variable]_at_bottom_interfaces`` is defined on `n` points. #. By default, *mixing_ratio* refers to mass mixing ratios. The long name should explicitly specify that it refers to the *mass* mixing ratio. From f201965d4a5bd4d669eb2cc167375cbd47603c24 Mon Sep 17 00:00:00 2001 From: MayeulDestouches Date: Fri, 5 Apr 2024 15:35:22 +0100 Subject: [PATCH 3/5] Use _at_all_interfaces suffix --- Metadata-standard-names.md | 14 +++++++------- StandardNamesRules.rst | 6 +++--- standard_names.xml | 14 +++++++------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Metadata-standard-names.md b/Metadata-standard-names.md index d36968b..84a8d85 100644 --- a/Metadata-standard-names.md +++ b/Metadata-standard-names.md @@ -153,13 +153,13 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `real(kind=kind_phys)`: units = m * `potentially_advected_quantities`: Potentially advected quantities * `real(kind=kind_phys)`: units = various -* `air_pressure_at_interface`: Air pressure at interface +* `air_pressure_at_all_interfaces`: Air pressure at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = Pa -* `air_pressure_of_dry_air_at_interface`: Air pressure of dry air at interface +* `air_pressure_of_dry_air_at_all_interfaces`: Air pressure of dry air at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = Pa -* `ln_air_pressure_at_interface`: Ln air pressure at interface +* `ln_air_pressure_at_all_interfaces`: Ln air pressure at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = 1 -* `ln_air_pressure_of_dry_air_at_interface`: Ln air pressure of dry air at interface +* `ln_air_pressure_of_dry_air_at_all_interfaces`: Ln air pressure of dry air at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = 1 * `largest_model_top_pressure_that_allows_molecular_diffusion`: Largest model top pressure that allows molecular diffusion * `real(kind=kind_phys)`: units = Pa @@ -167,7 +167,7 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `logical(kind=kind_phys)`: units = flag * `is_initialized_physics_grid`: Flag to indicate if physics grid is initialized * `logical(kind=kind_phys)`: units = flag -* `geopotential_height_at_interface`: Geopotential height at interface +* `geopotential_height_at_all_interfaces`: Geopotential height at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = m * `vertically_integrated_total_energy_of_initial_state`: Vertically integrated total energy of initial state * `real(kind=kind_phys)`: units = J m-2 @@ -1839,13 +1839,13 @@ Standard / required CCPP variables * `real(kind=kind_phys)`: units = 1 * `dimensionless_exner_function_at_surface_adjacent_layer`: Dimensionless exner function at surface adjacent layer * `real(kind=kind_phys)`: units = 1 -* `dimensionless_exner_function_at_interface`: Dimensionless exner function at interface +* `dimensionless_exner_function_at_all_interfaces`: Dimensionless exner function at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = 1 * `dissipation_estimate_of_air_temperature_at_model_layers`: Dissipation estimate of air temperature at model layers * `real(kind=kind_phys)`: units = K * `geopotential`: Geopotential * `real(kind=kind_phys)`: units = m2 s-2 -* `geopotential_at_interface`: Geopotential at interface +* `geopotential_at_all_interfaces`: Geopotential at interfaces between vertical grid cells * `real(kind=kind_phys)`: units = m2 s-2 * `graupel_mixing_ratio_wrt_moist_air`: Graupel mixing ratio wrt moist air * `real(kind=kind_phys)`: units = kg kg-1 diff --git a/StandardNamesRules.rst b/StandardNamesRules.rst index 982249f..29b536b 100644 --- a/StandardNamesRules.rst +++ b/StandardNamesRules.rst @@ -60,7 +60,7 @@ CCPP Standard Name Rules * ``[variable]``, with no location suffix, is defined at vertical-cell centers or as vertical-cell averages. - * ``[variable]_at_interface`` is defined at the interfaces between grid cells + * ``[variable]_at_all_interfaces`` is defined at the interfaces between grid cells vertically, including the bottom-most and top-most interfaces. * ``[variable]_at_top_interfaces`` is defined at the interfaces between grid cells vertically, including the top-most interface *but excluding the bottom-most @@ -71,7 +71,7 @@ CCPP Standard Name Rules top-most interface*. This implies that if ``[variable]`` is defined on `n` points vertically, - ``[variable]_at_interface`` is defined on `n+1` points, + ``[variable]_at_all_interfaces`` is defined on `n+1` points, ``[variable]_at_top_interfaces`` is defined on `n` points, and ``[variable]_at_bottom_interfaces`` is defined on `n` points. @@ -159,7 +159,7 @@ Suffixes | at_top_of_atmosphere_boundary_layer | at_top_of_atmosphere_model | at_top_of_dry_convection -| **at_interface** +| **at_all_interfaces** | **at_surface_adjacent_layer** | **at_2m** | **at_10m** diff --git a/standard_names.xml b/standard_names.xml index df7589f..9d2ebce 100644 --- a/standard_names.xml +++ b/standard_names.xml @@ -232,16 +232,16 @@ real - + real - + real - + real - + real @@ -254,7 +254,7 @@ long_name="Flag to indicate if physics grid is initialized"> logical - + real @@ -2799,7 +2799,7 @@ real - + real @@ -2808,7 +2808,7 @@ real - + real From d3c8c7907508413b2c33283298792533269baac2 Mon Sep 17 00:00:00 2001 From: MayeulDestouches Date: Tue, 9 Apr 2024 09:32:28 +0100 Subject: [PATCH 4/5] Update markdown file --- Metadata-standard-names.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Metadata-standard-names.md b/Metadata-standard-names.md index c5be7c4..5cb56ab 100644 --- a/Metadata-standard-names.md +++ b/Metadata-standard-names.md @@ -162,13 +162,13 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `real(kind=kind_phys)`: units = m * `potentially_advected_quantities`: Potentially advected quantities * `real(kind=kind_phys)`: units = various -* `air_pressure_at_all_interfaces`: Air pressure at interfaces between vertical grid cells +* `air_pressure_at_all_interfaces`: Air pressure at all interfaces * `real(kind=kind_phys)`: units = Pa -* `air_pressure_of_dry_air_at_all_interfaces`: Air pressure of dry air at interfaces between vertical grid cells +* `air_pressure_of_dry_air_at_all_interfaces`: Air pressure of dry air at all interfaces * `real(kind=kind_phys)`: units = Pa -* `ln_air_pressure_at_all_interfaces`: Ln air pressure at interfaces between vertical grid cells +* `ln_air_pressure_at_all_interfaces`: Ln air pressure at all interfaces * `real(kind=kind_phys)`: units = 1 -* `ln_air_pressure_of_dry_air_at_all_interfaces`: Ln air pressure of dry air at interfaces between vertical grid cells +* `ln_air_pressure_of_dry_air_at_all_interfaces`: Ln air pressure of dry air at all interfaces * `real(kind=kind_phys)`: units = 1 * `air_pressure_extended_up_by_1`: Air pressure extended up by 1 * `real(kind=kind_phys)`: units = Pa @@ -180,7 +180,7 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `logical(kind=kind_phys)`: units = flag * `control_for_negative_constituent_warning`: Logging setting for negative constituent mass fixer * `character(kind=len=*)`: units = 1 -* `geopotential_height_at_all_interfaces`: Geopotential height at interfaces between vertical grid cells +* `geopotential_height_at_all_interfaces`: Geopotential height at all interfaces * `real(kind=kind_phys)`: units = m * `vertically_integrated_total_energy_of_initial_state`: Vertically integrated total energy of initial state * `real(kind=kind_phys)`: units = J m-2 @@ -1955,13 +1955,13 @@ Variables related to the compute environment * `real(kind=kind_phys)`: units = 1 * `dimensionless_exner_function_at_surface_adjacent_layer`: Dimensionless exner function at surface adjacent layer * `real(kind=kind_phys)`: units = 1 -* `dimensionless_exner_function_at_all_interfaces`: Dimensionless exner function at interfaces between vertical grid cells +* `dimensionless_exner_function_at_all_interfaces`: Dimensionless exner function at all interfaces * `real(kind=kind_phys)`: units = 1 * `dissipation_estimate_of_air_temperature_at_model_layers`: Dissipation estimate of air temperature at model layers * `real(kind=kind_phys)`: units = K * `geopotential`: Geopotential * `real(kind=kind_phys)`: units = m2 s-2 -* `geopotential_at_all_interfaces`: Geopotential at interfaces between vertical grid cells +* `geopotential_at_all_interfaces`: Geopotential at all interfaces * `real(kind=kind_phys)`: units = m2 s-2 * `graupel_mixing_ratio_wrt_moist_air`: Graupel mixing ratio wrt moist air * `real(kind=kind_phys)`: units = kg kg-1 From e9471f3e24de86ffd4abb0fe050ce66c9fc10a1f Mon Sep 17 00:00:00 2001 From: MayeulDestouches Date: Tue, 16 Apr 2024 10:35:56 +0100 Subject: [PATCH 5/5] From _at_all_interfaces to _at_interfaces --- Metadata-standard-names.md | 14 +++++++------- StandardNamesRules.rst | 6 +++--- standard_names.xml | 14 +++++++------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Metadata-standard-names.md b/Metadata-standard-names.md index 5cb56ab..32e8b3d 100644 --- a/Metadata-standard-names.md +++ b/Metadata-standard-names.md @@ -162,13 +162,13 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `real(kind=kind_phys)`: units = m * `potentially_advected_quantities`: Potentially advected quantities * `real(kind=kind_phys)`: units = various -* `air_pressure_at_all_interfaces`: Air pressure at all interfaces +* `air_pressure_at_interfaces`: Air pressure at interfaces * `real(kind=kind_phys)`: units = Pa -* `air_pressure_of_dry_air_at_all_interfaces`: Air pressure of dry air at all interfaces +* `air_pressure_of_dry_air_at_interfaces`: Air pressure of dry air at interfaces * `real(kind=kind_phys)`: units = Pa -* `ln_air_pressure_at_all_interfaces`: Ln air pressure at all interfaces +* `ln_air_pressure_at_interfaces`: Ln air pressure at interfaces * `real(kind=kind_phys)`: units = 1 -* `ln_air_pressure_of_dry_air_at_all_interfaces`: Ln air pressure of dry air at all interfaces +* `ln_air_pressure_of_dry_air_at_interfaces`: Ln air pressure of dry air at interfaces * `real(kind=kind_phys)`: units = 1 * `air_pressure_extended_up_by_1`: Air pressure extended up by 1 * `real(kind=kind_phys)`: units = Pa @@ -180,7 +180,7 @@ Note that appending '_on_previous_timestep' to standard_names in this section yi * `logical(kind=kind_phys)`: units = flag * `control_for_negative_constituent_warning`: Logging setting for negative constituent mass fixer * `character(kind=len=*)`: units = 1 -* `geopotential_height_at_all_interfaces`: Geopotential height at all interfaces +* `geopotential_height_at_interfaces`: Geopotential height at interfaces * `real(kind=kind_phys)`: units = m * `vertically_integrated_total_energy_of_initial_state`: Vertically integrated total energy of initial state * `real(kind=kind_phys)`: units = J m-2 @@ -1955,13 +1955,13 @@ Variables related to the compute environment * `real(kind=kind_phys)`: units = 1 * `dimensionless_exner_function_at_surface_adjacent_layer`: Dimensionless exner function at surface adjacent layer * `real(kind=kind_phys)`: units = 1 -* `dimensionless_exner_function_at_all_interfaces`: Dimensionless exner function at all interfaces +* `dimensionless_exner_function_at_interfaces`: Dimensionless exner function at interfaces * `real(kind=kind_phys)`: units = 1 * `dissipation_estimate_of_air_temperature_at_model_layers`: Dissipation estimate of air temperature at model layers * `real(kind=kind_phys)`: units = K * `geopotential`: Geopotential * `real(kind=kind_phys)`: units = m2 s-2 -* `geopotential_at_all_interfaces`: Geopotential at all interfaces +* `geopotential_at_interfaces`: Geopotential at interfaces * `real(kind=kind_phys)`: units = m2 s-2 * `graupel_mixing_ratio_wrt_moist_air`: Graupel mixing ratio wrt moist air * `real(kind=kind_phys)`: units = kg kg-1 diff --git a/StandardNamesRules.rst b/StandardNamesRules.rst index 813f001..e3e0e12 100644 --- a/StandardNamesRules.rst +++ b/StandardNamesRules.rst @@ -60,7 +60,7 @@ CCPP Standard Name Rules * ``[variable]``, with no location suffix, is defined at vertical-cell centers or as vertical-cell averages. - * ``[variable]_at_all_interfaces`` is defined at the interfaces between grid cells + * ``[variable]_at_interfaces`` is defined at the interfaces between grid cells vertically, including the bottom-most and top-most interfaces. * ``[variable]_at_top_interfaces`` is defined at the interfaces between grid cells vertically, including the top-most interface *but excluding the bottom-most @@ -71,7 +71,7 @@ CCPP Standard Name Rules top-most interface*. This implies that if ``[variable]`` is defined on `n` points vertically, - ``[variable]_at_all_interfaces`` is defined on `n+1` points, + ``[variable]_at_interfaces`` is defined on `n+1` points, ``[variable]_at_top_interfaces`` is defined on `n` points, and ``[variable]_at_bottom_interfaces`` is defined on `n` points. @@ -170,7 +170,7 @@ Suffixes | at_top_of_atmosphere_boundary_layer | at_top_of_atmosphere_model | at_top_of_dry_convection -| **at_all_interfaces** +| **at_interfaces** | **at_surface_adjacent_layer** | **at_2m** | **at_10m** diff --git a/standard_names.xml b/standard_names.xml index 0897460..691af31 100644 --- a/standard_names.xml +++ b/standard_names.xml @@ -246,16 +246,16 @@ real - + real - + real - + real - + real @@ -275,7 +275,7 @@ long_name="Logging setting for negative constituent mass fixer"> character - + real @@ -3025,7 +3025,7 @@ real - + real @@ -3034,7 +3034,7 @@ real - + real