-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some arrays need accompanying properties array #282
Comments
Hi @gold2718 - looks great to me! I think this will help avoid the Sisyphean task of standardizing names of lumped organic species across chemical mechanisms, emissions schemes, photolysis modules, etc. and allow schemes to treat species based on their properties (as opposed to their names) to the extent this is possible. Having these derived types in separate modules sounds like a reasonable approach. One very minor thing: when it comes time to name these properties for chemical species could we use something along the lines of |
Note that this issue is related to, and may subsume #276. |
@mattldawson, Thinking about this a bit, I think we could have one array called |
Hi @gold2718, So just to make sure I'm understanding, there would be something like:
Is this sort of the idea? |
For the gas-phase chemicals, the chemists work with the number density of all of the species. Number density has a lower dependence on the context of the host model. I.e., to what thing is the ratio constructed in an arbitrary host model? Wet ratio? Dry ratio? Wet ratio excluding condensed material? |
As far as wet/dry/mass/volume conversions go, those are all scheme/model-specific decisions, as the denominator depends upon the scheme’s assumptions as to what the denominator is. |
@mattldawson, You can have an explicitly-named species as an element of an array.
The issue here is what is the type of all the other elements of |
@AndrewJConley, that's why I think the |
I agree with @AndrewJConley. Things would be simpler if q is the number density of all the tracers rather than a ratio. If a scheme wants a mixing ratio it can derive it from the number densities, defined however they like. |
It seems to me like we need a collection of constituent objects. Each object be queried for properties or attributes and state (concentration). |
Suggestion from @climbfuji: |
I followed up with GFDL on this question, and they already have that capability in their dycore. That is, two separate arrays of tracers, q and qdiag (the latter not advected). This capability is just not used in the UFS. So all it takes is to make the connection of those arrays with the CCPP standard names. |
@fvitt Regarding constituent information. There is a proposed standard for chemistry mechanisms and chemical information at https://github.com/NCAR/MechanismToCode/tree/master/schemas. What do you think of the information and the way that information is organized? How do you think that would interact with the ccpp-framework? |
Regarding the question of "do we want to have a water_species_array"? I can see the need for that among the parameterizations that need to know that data. For example, see the work being done by Peter Lauritzen to clarify thermodynamics in the physics parameterizations of CESM. But for Chemistry, we need the number density of gas-phase species. |
@AndrewJConley the chemical information is provided via JSON format. Will we be allowed to provide the chemical tracer information, such as the species names, at run time when the JSON is read or do we need to list the species names in the metadata for the ccpp-framework at build time? I suppose the JSON file could be read at build time. This is not clear to me. |
@fvitt @mattldawson The JSON mechanism specification includes the list of molecule names and the molecule properties (molecular weight, henry's law coefficients, activity coefficients, and is extensible for other properties). The mechanism is to be used run-time. At the moment it is used build-time, but the next version of the solvers will not need the preprocessor. The gas-phase solver needs none of the molecular properties, but the combined gas-aerosol solver will require some molecular properties. The solver requires number density (molecules/cc). Other processes (emissions, wet/dry dep, aqueous chemistry, radiative transfer, etc) require information about the molecules. Name-based choices in algorithms are much more risky than prooperty-based choices. The chemistry solver is being built under the assumption that the host model can provide the number-based composition of the atmosphere (N2, O2, Ar, H2O, O3, etc). |
I would love to see more detail about this proposal. By 'collection of objects', do you mean more than one constituent array? Something besides constituent arrays? |
The MI in MICM is supposed to stand for model independent so this assumption seems ill founded. I think it is better to think of chemistry as specifying its needs and what it supplies. |
I agree that properties are important. However, I am not sure there are enough properties for an unrelated component to guess that the species in question is ozone. The name really helps! Properties can be set at run time. If the owner (creator) of the array sets the |
This raises the question of where chemistry begins and ends. Is that a CCPP_framework decision or CESM decision? |
@gold2718 As we have discussed, the physics parameterizations have listed the "standard physical gas-phase species". But I'm still a bit confused. Where does the wet-removal data for Ozone come from? It is "chemistry" or the JSON data. It seems more flexible to be a run-time option than a hard-coded registry entry. |
@fvitt @gold2718 At the moment our proposed standard allows run-time representation of heterogeneous data for (for example) wet removal. Bases and acids have different types of data to initialize those methods. To throw out an ideas, perhaps there could be a number-density-of-gas-phase-species array and a co-indexed properties-of-number-density-of-gas-phase-species array. The properties-of array would be tiny in size in comparison to the gas-phase composition array itself, but the properties-of array would support considerable flexibility and extensibility in terms of its schema (including the protection status listed above). |
Neither has or needs full control here. Chemistry specifies its needs and what it supplies. The host model specifies what it supplies. Any overlap will be recognized by the framework (assuming the standard name is documented in chemistry) and the framework will take care of proper data handling. |
I'm not asking about the interface between the host and the scheme, but instead whether the radiative transfer for photolysis is part of chemistry or some other suite. |
First, your term, "chemistry", is vague, I'm not sure what you mean. In general, I would expect wet-removal data to get into the model in a fashion similar to how it does in CAM today -- that is, as run-time information (see my answer to an earlier question by @fvitt below). |
I think that both are possible, I think the choice is going to depend on what the chemistry design ends up looking like. Recent discussions seem to be leaning the direction of fairly little (if any) code generation with mostly run-time configuration of processes, species, and reactions. In that scenario, it makes sense (to me anyway) that the configuration data would be passed to the chemistry suite at init time (possibly in the form a file path name). The chemistry init routine would then populate the species property array or arrays with data now contained in namelists such as |
This sounds like an issue for the SIMA steering committee, not the CCPP framework. Am I missing something? |
I am not sure what is new about this thought. To me, it looks like exactly what is being proposed in this issue. What am I missing? |
In order to facilitate processing by unrelated suites, arrays of constituents (e.g., a Volume Mixing Ratio (VMR) array) must be accompanied by an array of constituent properties where each element of the properties array contains the properties of the corresponding constituent.
This issue is an extension of the Proposal for Communicating Constituent Properties which contains more information on specific properties but which has been dormant for about 1.5 years.
Some properties of the constituent properties array.
volume_mixing_ratio_array
, the standard name of the associated properties array would beproperties_of_volume_mixing_ratio_array
.public
,protected
array of objects this DDT.@AndrewJConley, @mattldawson, @cacraigucar, thoughts?
Some implementation thoughts:
The text was updated successfully, but these errors were encountered: