The CCPP-framework provides end users  with the ability to plug in different schemes and reorder schemes with minimal effort.  To provide that functionality, the following steps need to be taken when introducing a new scheme.  

IMPORTANT NOTE – MUSICBOX AND THE CCPP-FRAMEWORK ARE EXPECTED TO EVOLVE IN THE NEAR FUTURE AND THE FOLLOWING DIRECTIONS WILL MOST LIKELY NOT APPLY TO FUTURE VERSIONS.

CCPP is fully documented at https://dtcenter.org/gmtb/users/ccpp/docs/CCPP-DevGuide-v2.pdf.  While we will describe changes that are required for adding a new scheme, the full details of the CCPP framework are beyond the scope of this section.  We encourage users to refer to the CCPP documentation for additional information.

The CCPP framework does a prebuild (which generates fortran code from the metadata and performs other prebuild steps).  The prebuild takes the specially formatted metadata and generates new "cap" files as well as matching variables using their standard_names, checking units, rank, etc. and creating accessory fortran code.  All of these details happen behind the scenes and should not need to be known to users of MusicBox.

In this section we will be creating a new script called ABCD and introducing a new scheme called XXX.  These directions are assuming that the host model is still MusicBox.

CODE CHANGES

Schemes must have the following so that the ccpp-framework will be able to auto-generate the necessary code

INFRASTRUCTURE CHANGES

ccpp_prebuild_config_MusicBox_ABCD.py

Create a new script called ccpp_prebuild_config_MusicBox_ABCD.py.   The directions below are assuming you are starting with an already established script such as  MusicBox/ccpp-framework/scripts/ccpp_prebuild_config_MusicBox.py and making modifications for your scheme XXX.

MusicBox_host/suites/suite_MusicBox_ABCD.xml

HOST MODEL CAP (MusicBox_host/src/MusicBox_var_defs.f90)

MICM_chemistry/CMakeLists.txt