Currently every dycore has a derived_phys subroutine that calculates many physics state variables that are not automatically provided by the dycore itself for various reasons (e.g. the dycore uses dry pressure instead of moist pressure). In CAMDEN we can know ahead of time which variables will not be calculated by the dycore, and thus could call a physics routine that automatically calculates any missing state variables that physics needs, thus providing a derived_phys routine that is independent of the specific dycore chosen, or at least the dp_coupling layer. It could also provide a path to potentially CCPP-ize the derived_phys routine itself.
That being said, there are some infrastructure details that need to be worked out in order for this to occur, such as how this new derived_phys routine will actually know which variables need to be calculated at runtime, which in-turn may require some new auto-generated code. Thus this issue will act as a landing place for potential ideas and/or concerns that should be discussed, at least until a working prototype has been developed.
Currently every dycore has a
derived_phys
subroutine that calculates many physics state variables that are not automatically provided by the dycore itself for various reasons (e.g. the dycore uses dry pressure instead of moist pressure). In CAMDEN we can know ahead of time which variables will not be calculated by the dycore, and thus could call a physics routine that automatically calculates any missing state variables that physics needs, thus providing aderived_phys
routine that is independent of the specific dycore chosen, or at least the dp_coupling layer. It could also provide a path to potentially CCPP-ize thederived_phys
routine itself.That being said, there are some infrastructure details that need to be worked out in order for this to occur, such as how this new
derived_phys
routine will actually know which variables need to be calculated at runtime, which in-turn may require some new auto-generated code. Thus this issue will act as a landing place for potential ideas and/or concerns that should be discussed, at least until a working prototype has been developed.