All CCSM component models must come pre-instrumented with certain standard timing and flux-conservation diagnostics. These diagnostics are routinely required and it is most efficient that they become part of the component's base code, rather than being added in an ad hoc fashion during testing.
Five timing calls should be included in every component, and they should be printed at the end of the run. These are
The sum of the last 4 timers should add up to the first. The timer naming convention or format is not specified at this time. They should be consistent with the component's current style of writing timing output.
Compute the global area integral of each flux before sending and after receiving. These calculations will be used to check the conservation of the fields passed. These changes will probably be added to the csm_send and csm_recv type subroutines. The global area integrals should result in units of Watts, Kg/s and Newtons since the fluxes are sent as W/m2, Kg/m2-s, and N/m2. These should be written out in full precision and be easily turned on or off through a run time option. We suggest keying this diagnostic off the coupler's info_dbug value which is sent to each component in ibuff(12) and that writing these diagnostics when info_dbug >= 2.
The output format should be written with the following format statement, so it's easy to parse and diff.
write(6,100) 'ocn','recv',nfield,global_sum,'taux' 100 format('comm_diag ',a3,1x,a4,1x,i3,es26.19,a)
Where the first variable is a 3 letter component name, the second is "send" or "recv", the third is the field number in the buffer, the fourth is the actual calculated value of the global sum and the fifth is an "optional" string to provide more information than just the field number when looking at the diagnostic.