Skip to content

Adding some information on Standard Names for dimensions in metadata files#80

Open
mkavulich wants to merge 3 commits intoNCAR:mainfrom
mkavulich:add_dimensions_info
Open

Adding some information on Standard Names for dimensions in metadata files#80
mkavulich wants to merge 3 commits intoNCAR:mainfrom
mkavulich:add_dimensions_info

Conversation

@mkavulich
Copy link
Copy Markdown
Collaborator

As part of the ESM Standard Names reorganization (PR incoming), I noticed a lot of CCPP-specific information about dimensions was stored there, that should more properly be located in the CCPP tech doc. This PR adds that information.

Comment on lines +404 to +405
[dim_name]_begin:[dim_name]_end ==> 1:[dim_name]_loop_extent
[dim_name]_begin:[dim_name]_end ==> 1:[dim_name]_dimension
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know what you mean (because I wrote ccpp-prebuild), but for most people this will be confusing and scary. We need to explain that the left side (slices of the entire array allocated by the host model) in the CCPP run phase are sent to the CCPP physics scheme for parallel processing using OpenMP threading, and that schemes require the horizontal "dimension" for the current call to run from 1 to the length of the slice. I hope you can explain that better; some of it may already be explained in the next section (It is important to understand the difference between horizontal_dimension vs. horizontal_loop_extent), in which case we should refer to that section.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much of this text was pulled out of the "dimensions" comment of the Standard Names, since it shouldn't really be documented there anymore. But I admit I do not know much about how CCPP handles parallelization decomposition, except from what I've read in the documentation. I have tried to rephrase it better to the best of my understanding of how CCPP works, please let me know if the current version makes more sense or if you think it needs more work.

Comment on lines +408 to +409
but not in xxx_run routines. Currently, the only dimension which supports all
six dimension types is horizontal_dimension.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really understand what you mean with the last sentence, but I don't it's correct and it should probably be removed.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was another phrase directly from the comments I pulled out of the Standard Names. I think the intention was to indicate that OpenMP parallelism is only broken down along the horizontal dimension, not other dimensions. Is this not correct?

mkavulich added a commit to ESCOMP/ESMStandardNames that referenced this pull request Apr 9, 2026
… within each section (#140)

## Description
This PR reorganizes the existing standard names (with no changes, except some updated descriptions) into a new section heirarchy that removes references to specific modeling systems (specifically GFS typedefs). The new sections are mostly descriptive of the way the variable is used, and I attempted to make the sections as generic as possible. With this type of natural language organization I believe it's impossible to unambiguously assign certain variables to certain sections, but I have attempted to keep things as organized as possible. The new sections are in bold below

 - Base names
   - Generic names
   - Chemical species
   - Base standard Names
 - Dimensions
 - Constants
 - Coordinates
 - **Timing** Variables defining or relating to timing, dates, calendar, and related concepts
 - **Atmospheric properties**
 - Marine
 - **Tracers** Tracers are numerically zero-mass particles advected in fluid flow, typically representing some trace gas, particle, or other physical substance
 - Atmospheric composition
   - **Gasses**
   - **Precipitation, cloud, and hydrometeor variables**
   - **Aerosols**
   - **Emissions** Emissions variables, contributed for the Community Emissions Data System (CEDS)
 - Application-specific variables
   - Required CCPP framework-provided variables
   - Optional CCPP framework-provided variables
 - System variables
 - **Control variables** Variables that indicate or control some action.
 - **Indices** Values indicating the index of some array or other data structure
 - **Coefficients** Coefficients includes scaling factors, tunable parameters, and other similar variables
 - **Thresholds** Thresholds represent some value at which the behavior of some process changes, including maximums and minimums
 - **Stochastic physics variables**
 - **Radiation**
 - **Atmospheric surface and boundary layer**
 - **Land surface, subsurface, and vegetation properties**
 - **Convective physics parameters**
 - **Gravity wave drag parameters**
 - **Tendencies**
 - **Chemistry processes**


I am very open to feedback about changing these specific section names, so please review away. I tried to keep the sections as generic as possible, avoiding references to specific models or types of parameterization, but it wasn't always possible from my point of view.

Within each section, standard names are now alphabetized to give a more logical and unambiguous sorting. This was accomplished with a new tool, `tools/sort_standard_names.py`, written by Claude Code running locally with `gpt-oss:20b`. I also added another Claude-Code-written tool, `tools/list_names.py`, that gives a monolithic alphabetized list of all standard names; I used this to ensure that no names were accidentally lost in the reorganization. I have thoroughly reviewed the Claude-generated scripts, and attest that I understand and approve of their functionality.

I have integrated the alphabetization check into the GitHub CI, and added a rule about this alphabetization to the Rules document.

Because the alphabetization is maintained by a tool, it does constrain the formatting and indentation of the XML. I believe this is a fine tradeoff, since the Metadata files are designed to be human-readable and it's a lesser concern for the XML. But I'm open to feedback on this.

Finally, there was a lot of text in the comment of the Dimensions section that was specific to CCPP; I have removed this text and added it to the CCPP technical documentation (NCAR/ccpp-doc#80)

## Issues
Resolves #135
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants