When we first started putting MARBL together, I tended to think about debug levels from the point of view of "when debugging we want more information written to stdout, but typical runs should not flood stdout with log messages." As part of testing the MOM6 driver, c885411 introduced a new function to ensure some of the forcing fields MARBL receives are physically consistent (currently, the only check is that the PAR column fractions sum to 1); while not an additional burden on the log volume, this has had a large impact on performance - so in this case, I think ideal behavior would be to only perform the check when the user explicitly asks for it.
I am currently testing a commit that adds an lcheck_forcing flag to marbl_settings_mod.F90, which will control whether we call check_forcing() or not (default is not to call it), but I wonder if perhaps we want a blanket ldebug flag rather than controlling every process independently?
If we do adopt a global debug flag, we would then need to determine what other processes / checks we want disabled by default but enabled in debug mode.
When we first started putting MARBL together, I tended to think about debug levels from the point of view of "when debugging we want more information written to stdout, but typical runs should not flood stdout with log messages." As part of testing the MOM6 driver, c885411 introduced a new function to ensure some of the forcing fields MARBL receives are physically consistent (currently, the only check is that the PAR column fractions sum to 1); while not an additional burden on the log volume, this has had a large impact on performance - so in this case, I think ideal behavior would be to only perform the check when the user explicitly asks for it.
I am currently testing a commit that adds an
lcheck_forcing
flag tomarbl_settings_mod.F90
, which will control whether we callcheck_forcing()
or not (default is not to call it), but I wonder if perhaps we want a blanketldebug
flag rather than controlling every process independently?If we do adopt a global debug flag, we would then need to determine what other processes / checks we want disabled by default but enabled in debug mode.