Adding a New Tracer Module to the cime_pop Model¶
The steps to add a POP tracer module to the cime_pop model of the solver are:
Ensure that the tracer module’s implementation in POP meets the needs of the solver:
Tracer Initialization: As described in the solver’s description, the cime_pop model utilizes the xml variable
POP_PASSIVE_TRACER_RESTART_OVERRIDEto specify tracer initial conditions. So tracer modules being supported by cime_pop need to set their namelist variables appropriately when this xml variable is not"none". The usage of this xml variable in POP’s build-namelist script for the setting of namelist variables in the namelistiage_nmlfor POP’s iage tracer module is a template that can be followed for other POP tracer modules.Diagnostic Output: Ensure that POP’s tavg_contents file contains the fields required for the Jacobian preconditioner and additions to the solver’s stats file. The fields required for the Jacobian preconditioner are listed in the
hist_to_precond_varnameslists for each matrix definition in theprecond_matrix_defsdictionary in the tracer module definition file. The fields required for additions to the solver’s stats file are embedded in the code that adds the fields to the stats file.
Add metadata for the tracer module to the tracer module definition file. Additions to this file need to adhere to the file’s format, which is described in the user’s guide. These additions can be added to the copy of the tracer module definition file present in the repo at
$TOP/input/cime_pop/tracer_module_defs.yaml, or they can be added to a copy of this file, and the cfg files can point to this modified copy via the cfg file’s variabletracer_module_defs_fname.To use the tracer module that has been added to the solver, add the tracer module name to the variable
tracer_module_namesin the cfg files. Note that this is the name of the tracer module in the tracer module definition file. This is not necessarily the same as the name of the tracer module in POP.