Subroutines in global_summary.F90 (but excluding the MPI communications).
In ACME's code repository. Currently on branch huiwanpnnl/atm/global_verif_smry.
Path: ACME/components/cam/src/physics/granular_tests/global_summary_reorg/
During an ACME-atmosphere model simulation, a number of global fields are monitored for unphysical values such as negative tracer concentrations or excessive moisture flux from the atmosphere to the Earth's surface. In the standard model, warning messages (when switched on) are printed to atm.log and acme.log from every chunk of the physics grid, which often leads to excessively large log files. The module in ACME/components/cam/src/physics/global_summary.F90 provides concise summaries of the unphysical values. The information printed to the log files include:
This set of unit tests checks whether the subroutines in global_summary.F90 work as intended.
The initialization phase tests the following functionalities:
The basic method used in the tests is to get two global summaries for the same field, once for values (or absolute values) greater than or equal to a threshold, and once for values (or absolute values) smaller than the same threshold, add the total counts of violation occurance from the two summaries, then check whether
A clipping option is implemented as an option to reset the exceeding values to the threshold. Clipping is turned on during field registration. To test whether the clipping works as extended, we
All the tests described above are coded in a single Fortran subroutine. If the program runs successfully and gives correct results, the following line will be printed to stdout (or a log file):
"all results conformed with expected values"