amber-developers: GB/LES GB1 diffcoords FP exception on Sun

From: John Mongan <jmongan.mccammon.ucsd.edu>
Date: Mon, 27 Mar 2006 14:24:39 -0700

Seems to be a floating point exception at line 435 of runmd.f:

#ifdef LES
    sdfacles = sqrt( 4.d0*gammai*boltz2*temp0les/dtx )
#endif

This generates a fatal floating point exception on Sun when temp0les is
negative. (Not entirely sure why this wouldn't be a problem on other
architectures -- maybe they're returning a complex result and then
casting it back to a double) It seems that a negative temp0les is being
used as a flag to indicate how the thermostating should be done.

For what it's worth, I think we should try to avoid using "data"
variables as flags like this (by setting them to "special" values). It
makes the code harder to read, it leads to bugs like this one when the
special values get used in calculations and it's less efficient (double
precision comparison vs. checking a bool). If a flag is needed, it
should be declared, rather than recycling an existing variable. My $0.02
anyway.

John

David A. Case wrote:
> On Fri, Mar 24, 2006, John Mongan wrote:
>
>
>>[jmongan.cabot test]$ cd LES_GB; ./Run.LES
>>SANDER: LES+GB
>>1: GB/LES GB1 diffcoords
>>Arithmetic Exception (core dumped)
>> ./Run.LES: Program error
>
>
> Can you try to debug it? I can also ask Mike to look at this on Monday
>
> ....dac
Received on Wed Apr 05 2006 - 23:49:35 PDT
Custom Search