Skip to content

Some arrays need accompanying properties array #282

@gold2718

Description

@gold2718

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.

  • The standard name of the constituent properties array is related to the standard name of the associated constituent array. For instance, if the constituent array's standard name is volume_mixing_ratio_array, the standard name of the associated properties array would be properties_of_volume_mixing_ratio_array.
  • The properties for each constituent are defined in that constituent's metadata.
  • The properties for each constituent are collected into a Derived Data Type (DDT) which is created by the CCPP Framework and made available via an element of a public, protected array of objects this DDT.
  • The elements of the DDT will be private with an "accessor" method for each property.

@AndrewJConley, @mattldawson, @cacraigucar, thoughts?

Some implementation thoughts:

  • I am thinking of implementing the DDT in its own module or perhaps in ccpp_kinds.F90 (since it is a kind).
  • A particular constituent properties array will probably be written either to its own module or to the suite CAP file. It will be initialized at the top of the suite's initialization subroutine (there are still compiler issues with initializing DDT arrays as module data). An advantage of having it in its own module is avoiding possible circular dependency issues since the array will be defined in one suite but will also used by a different suite and the host model.
  • The accessor functions could be used directly but will also probably be accessible as host cap functions (which take a standard name plus an index) to ease use from host models.
  • Direct accessor use by physics schemes will be enabled by having the properties array as an input (via the standard name above).

Metadata

Metadata

Assignees

Labels

capgenbugs, requests, etc. that involve ccpp_capgenenhancement

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions