Skip to content

Conversation

@mkavulich
Copy link
Collaborator

Here is the next round of proposed changes, resolving several open issues related to topics of discussion over the past several weeks:

List of changes

There were also a few changes not covered by issues:

  • Added the start of a "Technical specifications" section of the rules, describing the technical details of the dictionary itself. This includes the restrictions previously discussed on including only ASCII characters (and only alphanumeric + _ for standard_names themselves)
  • Removed references to specific deviations from the CF standard name rules, since we are far diverged at this point.
  • Added units to base_name entries where appropriate
  • Removed several duplicate name entries
  • Removed two generic names that do not exist in CF and are not used in any existing standard names (in this dictionary or CCPP)
    • data_mask
    • specific_eddy_kinetic_energy
  • Added an example "comment" entry as an example of how this attribute could be used (see the mixing_ratio entry)
  • Changed air_potential_temperature --> potential_temperature_of_air per our previous discussions about designating mediums except for variables like air_temperature that are in common use.

Please suggest changes if you think they are needed! This is especially true of the definitions; this effort is far from perfect, I just wanted to get something reasonable down. I started from CF standard names and AMS Glossary of Meteorology where possible, but many of them probably need a lot of work, especially since the general definition may be different from that used in Earth System Modeling (and context may even change within different ESM fields!).

climbfuji and others added 14 commits March 4, 2025 15:37
Update StandardNamesRules.rst: add _due_to_planetary_boundary_layer (ESCOMP#80)

* Update StandardNamesRules.rst: add _due_to_PBL_processes and other process suffixes
Add/modify skin temperature at surface variables. (ESCOMP#84)

* Add JEDI skin temperature variables
* Change sea to ocean
add emissions names (ESCOMP#86)

This adds emissions names to the CCPP standard names
…ion between original CF standard names and ESM standard names (since we are so far removed now)
…ones like "energy" and "volume"

 - Add new generic name "heat"
 - Remove some generic names that do not exist in CF and are not used in any existing standard names (in this dictionary or CCPP in general)
   - data_mask
   - specific_eddy_kinetic_energy
 - Add the first "comment" entry as an example of how it might be used
 - Add a couple new "base name" entries
…ous ones or others I will open an issue for)

 - Removing a few base names that don't make sense in isolation (date)
 - Remove duplicates (density, heat_flux, ozone, streamfunction)
* `stress`: A deformation force across a unit area
* `real`: units = Pa
* `streamfunction`: streamfunction
* `streamfunction`: Streamfunction
Copy link
Collaborator

Choose a reason for hiding this comment

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

Should this be one or two words?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

From a quick survey of the internet and my bookshelf it seems that both are acceptable, with a slight preference for the single-word streamfunction in atmospheric science:

streamfunction

stream function

* `vertical_index_at_top_interface`: Vertical index at top interface
* `integer`: units = index
* `number_of_openmp_threads`: Total number of thread blocks which the host model may use to call CCPP physics run groups during the CCPP run phase.
* `number_of_openmp_threads`: Total number of thread blocks OpenMP (shared-memory) parallel threads.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
* `number_of_openmp_threads`: Total number of thread blocks OpenMP (shared-memory) parallel threads.
* `number_of_openmp_threads`: Total number of OpenMP (shared-memory) parallel threads.

Comment on lines 768 to 772
* `ccpp_block_count`: Ccpp block count
* `integer(kind=)`: units = count
* `ccpp_block_sizes`: Ccpp block sizes
* `integer(kind=)`: units = count
* `ccpp_thread_number`: Number of current thread block. This variable may only be used during CCPP run phase
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
* `ccpp_block_count`: Ccpp block count
* `integer(kind=)`: units = count
* `ccpp_block_sizes`: Ccpp block sizes
* `integer(kind=)`: units = count
* `ccpp_thread_number`: Number of current thread block. This variable may only be used during CCPP run phase
* `ccpp_block_count`: CCPP block count
* `integer(kind=)`: units = count
* `ccpp_block_sizes`: CCPP block sizes
* `integer(kind=)`: units = count
* `ccpp_thread_number`: Number of current OpenMP thread. This variable may only be used during CCPP run phase

| due_to_dry_convection
| due_to_gravity_wave_drag
| due_to_gwd
| due_to_convective_
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is the trailing underscore intentional?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Good catch, this should have been due_to_convective_gwd. Fixed.

@mkavulich mkavulich requested a review from climbfuji April 17, 2025 15:29
Copy link
Collaborator

@nusbaume nusbaume left a comment

Choose a reason for hiding this comment

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

Thanks for all of these great updates @mkavulich! I just had some wording-related requests and a few other small changes.

+---------------------+---------------------------------------------------------+
| shoc | simplified higher-order closure stochastic scheme |
+---------------------+---------------------------------------------------------+
| shum | Stochastic HUMidity stochastic physics option |
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
| shum | Stochastic HUMidity stochastic physics option |
| shum | stochastic humidity stochastic physics option |

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I included the capitalization to make the term easier to parse (since "stochastic" appears twice, once as the title of the option, the other as a descriptor). I did some digging and found a potentially better description of the scheme, let me know if this looks okay

+---------------------+---------------------------------------------------------+
| mynn | Mellor-Yamada-Nakanishi-Niino scheme |
+---------------------+---------------------------------------------------------+
| nir | near-infrared part of the EM spectrum (radiation) |
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
| nir | near-infrared part of the EM spectrum (radiation) |
| nir | near-infrared part of the shortwave spectrum (radiation) |

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Is near-infrared still considered shortwave? I thought that any wavelengths longer than visible would fall in the "longwave" category.

Copy link
Collaborator

Choose a reason for hiding this comment

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

In the radiation parameterizations, UV-B, nearIR and uv-vis are in the SW. But yeah , it's confusing.
Your call. Leave as is, or maybe change EM to electromagnetic?

* `real`: units = m2 s-1
* `cloud_area_fraction`: Fraction of an area (usually within a grid cell) containing cloud
* `real`: units = fraction
* `cloud_condensate`: cloud_condensate
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
* `cloud_condensate`: cloud_condensate
* `cloud_condensate`: Amount of condensed water in cloud

* `tendency_of_air_temperature_to_withhold_from_sppt`: Tendency of air temperature to withhold from sppt
* `tendency_of_air_temperature_to_withhold_from_sppt`: Tendency of air temperature to withhold from stochastically perturbed physics tendencies
* `real(kind=kind_phys)`: units = K s-1
* `tendency_of_activated_cloud_condensation_nuclei_from_climatology`: Tendency of activated cloud condensation nuclei from climatology
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
* `tendency_of_activated_cloud_condensation_nuclei_from_climatology`: Tendency of activated cloud condensation nuclei from climatology
* `tendency_of_activated_cloud_condensation_nuclei_from_climatology`: Change of activated cloud condensation nuclei from climatology per unit time

</standard_name>
<standard_name name="thickness"
long_name="thickness">
long_name="The vertical distance between two constant-pressure surfaces">
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
long_name="The vertical distance between two constant-pressure surfaces">
long_name="The distance between two surfaces">

Copy link
Collaborator

Choose a reason for hiding this comment

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

?

</standard_name>
<standard_name name="tendency_of_dry_air_enthalpy_at_constant_pressure"
long_name="Tendency of dry air enthalpy at constant pressure">
long_name="Tendency of dry air enthalpy at constant pressure; d/dt(Cp*T)">
Copy link
Collaborator

Choose a reason for hiding this comment

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

If you agree with the long_name changes int Metadata-standard-names.md, should we also make them here? (i.e. tendency yadayada -> Change of yadayada per unit time.)

</standard_name>
<standard_name name="do_shoc">
<standard_name name="do_shoc"
long_name="Do Simplified Higher-order Closure stochastic physics scheme">
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
long_name="Do Simplified Higher-order Closure stochastic physics scheme">
long_name="Do Simplified Higher-Order Closure stochastic physics scheme">

</standard_name>
<standard_name name="do_shoc_after_convection">
<standard_name name="do_shoc_after_convection"
long_name="Do Simplified Higher-order Closure stochastic physics scheme after convection parameterization">
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
long_name="Do Simplified Higher-order Closure stochastic physics scheme after convection parameterization">
long_name="Do Simplified Higher-Order Closure stochastic physics scheme after convection parameterization">

Copy link
Collaborator Author

@mkavulich mkavulich left a comment

Choose a reason for hiding this comment

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

Thanks for your thorough reviews! @nusbaume I think I have addressed all your suggestions. @dustinswales I have addressed most of your comments and had a couple follow-up questions.

+---------------------+---------------------------------------------------------+
| mynn | Mellor-Yamada-Nakanishi-Niino scheme |
+---------------------+---------------------------------------------------------+
| nir | near-infrared part of the EM spectrum (radiation) |
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Is near-infrared still considered shortwave? I thought that any wavelengths longer than visible would fall in the "longwave" category.

+---------------------+---------------------------------------------------------+
| shoc | simplified higher-order closure stochastic scheme |
+---------------------+---------------------------------------------------------+
| shum | Stochastic HUMidity stochastic physics option |
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I included the capitalization to make the term easier to parse (since "stochastic" appears twice, once as the title of the option, the other as a descriptor). I did some digging and found a potentially better description of the scheme, let me know if this looks okay

* `diffuse_nir_albedo`: Albedo of diffuse incident near-infrared radiation
* `real`: units = 1
* `diffuse_nir_shortwave_flux`: Flux of diffuse near-infrared and shortwave radiation
* `real`: units = 1
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Thanks for catching these, I think I just forgot to finish my review of correct units for this section. And I don't even know how some of them got J s-1 instead of W s-1...

* `graupel`: Precipitation consisting of heavily rimed ice crystals
* `gravitational_acceleration`: Gravitational acceleration
* `real`: units = m s-2
* `hail`: Precipitation consisting of large pieces of ice formed in convective clouds
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It was hard for me to find a concise and accurate description of what "hail" actually is that excludes ice pellets. Graupel doesn't need the "convective" descriptor because it doesn't happen from non-convective clouds, but I don't know how best to distinguish hail without including that descriptor.

I gave it another shot to hopefully satisfy both of us.

* `pressure`: Pressure
* `real`: units = Pa
* `rain`: Precipitation of liquid water from clouds
* `rain_water`: Liquid water precipitation
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Good point; there was only a single instance of the literal rain_water string so I just consolidated it to rain.

* `temperature`: Temperature
* `real`: units = K
* `temperature_flux`: Flux of temperature across a unit surface
* `real`: units = K m s-1
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is specifically "temperature flux" not heat flux, so I'm pretty sure these units are correct. See, for example, Table 1 here

* `potential_temperature_of_air`: air potential temperature
* `real(kind=kind_phys)`: units = K
* `air_potential_temperature_on_previous_timestep`: air potential temperature on previous timestep
* `potential_temperature_of_air_on_previous_timestep`: air potential temperature on previous timestep
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The suffix listed in the Standard Name rules is "on_previous_timestep" (and it's used in a number of other names) so this would require a larger change if you think it's needed.

@mkavulich mkavulich requested review from dustinswales and nusbaume May 9, 2025 18:33
Copy link
Collaborator

@nusbaume nusbaume left a comment

Choose a reason for hiding this comment

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

Everything looks good to me now. Thanks again @mkavulich!

@mkavulich mkavulich merged commit faf4b6d into ESCOMP:release/v1 May 13, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet