NCAR / ccpp-framework

Common Community Physics Package (CCPP)
http://www.dtcenter.org/community-code/common-community-physics-package-ccpp/
Other
26 stars 63 forks source link

Should capgen support pointer metadata? #513

Closed gold2718 closed 5 months ago

gold2718 commented 8 months ago

Summary of Issue:

Currently, capgen does not have the pointer attribute. This has not been a problem because capgen does not create pointers and does not need to pass any pointers to CCPP schemes.

However, in order to check if a variable passed with the active metadata is correct (in debug mode), this information might be needed. The circumstances could be:

With this combination, the active check code could fail. At the very least, I think a case like this should be added to the unit tests and if it breaks, adding a pointer attribute might be a solution. In this case, capgen would add the pointer attribute to the group dummy argument. It should still (I think) be an error for schemes to have pointer variables, anyone have thoughts on this?

Are there other cases where the pointer attribute would a required addition to the defined metadata fields?

climbfuji commented 5 months ago

Based on what we discussed recently - the combination of the active attribute on the host model side and associated mandatory optional arguments for physics schemes, do you agree that we don't need to support pointer metadata/variables?

@dustinswales @peverwhee @nusbaume @grantfirl also a question for you

nusbaume commented 5 months ago

Assuming the plans for the active attribute handle the use case(s) listed above then I am personally fine with not supporting pointers. The only other possible situation I could think of would be if a physics scheme explicitly needed a pointer as an input argument, but I can't currently think of a use case where that would be necessary.

climbfuji commented 5 months ago

I am closing this as "won't fix / not needed" based on the solution we came up with for potentially unallocated host model data (active attribute on host side, optional attribute on scheme side). We need to add something to the CCPP technical documentation that says pointer variables are not allowed in physics schemes.

Please reopen if you think this is not sufficient!