Re: Precision problems with CCM3


Subject: Re: Precision problems with CCM3
From: Jim Rosinski (rosinski@skyhawk.cgd.ucar.EDU)
Date: Tue Mar 25 1997 - 11:15:39 MST


This message is in response to Carlos Sanchez' recent email to ccm-users
concerning numerical differences between CCM3 runs when compiler options are
changed, or when runs are done on different machines. The question is, what
magnitude of differences can be considered "acceptable"?

We have studied this issue, and a paper has just been published describing
the procedure we use to ensure that the CCM is producing "correct" answers
(i.e. relative to a trusted machine and compiler) when porting the code to a
different machine or using a different compiler. Please see:

Rosinski, J.M. and D.L. Williamson, 1997:
The accumulation of rounding errors and port validation for global
atmospheric models.
SIAM J. Sci. Comput., 18, 552-564.

for details. I won't go into details here, referring the reader instead to
the above paper. The bottom line is that 2 CCM3 simulations generated
on different machines or using different compilers or compiler options should
diverge no faster than 2 simulations generated on a "trusted" machine and
compiler where one of the simulations has a minimal perturbation imposed on
the initial conditions. There is a namelist variable available in CCM3 which
applies such a perturbation. It is called PERTLIM (see pg. 24 of the CCM3
User's Guide). An appropriate setting would be 1.E-14. It is primarily on
the basis of this procedure that we have verified CCM3 behavior and provided
switches for various architectures such as RS6K, SGI, and SUN.

One caveat must be mentioned here since the paper was written before
the land surface model (LSM) was a standard component of the CCM. In order
for the procedure outlined above to be useful, the solution difference growth
must behave "reasonably" in the sense that large jumps in the RMS difference
of a prognostic field should be avoided. An additional namelist variable,
PERGRO (in the LSM namelist and mentioned on pg. 25 of the CCM3 User's Guide)
needs to be set to .true. when applying the random perturbation and port
test.

Finally, when applying the above test to machines which use a different
floating point format (e.g. between CRAY and SGI), the Gaussian weights and
Legendre polynomials need to be the same on each machine. In the next
release of CCM3, this will be accomplished by using real*16 arithmetic in
these routines.

Hopefully this sheds some light on questions about numerical differences
generated by CCM3 on various platforms and/or with different compiler
options.

Jim Rosinski
CCM Core Group



This archive was generated by hypermail 2b27 : Thu Jun 01 2000 - 09:10:49 MDT