Here is the bugfix. This should've been caught in Amber8 ... I don't
understand why it is okay with most compilers.
Best,
Ray
Ray Luo wrote:
> Hi Ross,
>
> Yes, this is a bug. I can reproduce the reported problem on an
> SGI/IRIX workstation. Fortunately, a oneline fix in "sa_driver.f"
> solves the problem. pbsa now passes all tests after the fix. After
> testing with ifort and g95, I'll check in the fix into Amber10 and
> upload a bugfix for both the pbsa and sander "sa_driver.f" tomorrow.
>
> Best,
> Ray
>
>
> Ross Walker wrote:
>
>> Hi All,
>>
>> Please see the message from Roberto below with regards to problems in
>> Amber
>> 9 on Irix and Altix. He has found a problem with an algorithm in pbsa.
>> However, this exact same algorithm is used in
>> $AMBERHOME/src/sander/sa-driver.f, $AMBERHOME/src/pbsa/sa-driver.f and
>> $AMBERHOME/src/pbsa/pb_sasa.f
>>
>> I suspect this is behind a number of problems we are seeing with PB test
>> cases on various machines.
>>
>> Can anybody see what is wrong with the algorithm / see a quick way to
>> fix
>> it?
>>
>> All the best
>> Ross
>
--
====================================================
Ray Luo, Ph.D.
Department of Molecular Biology and Biochemistry
University of California, Irvine, CA 92697-3900
Office: (949)824-9528 Lab: (949)824-9562
Fax: (949)824-8551 e-mail: rluo.uci.edu
Home page: http://rayl0.bio.uci.edu/rayl/
====================================================
Author: Ray Luo
Date: 05/2/2006
Programs: pbsa
Description: sa_driver.f has a statement causing a negative number to be
taken square root. This is not correct, but most compilers,
except sgi_mips/altix, allow it.
Fix: apply the following patch to amber9/src/pbsa/sa_driver.f
------------------------------------------------------------------------------
*** sa_driver.f Mon Apr 3 23:35:48 2006
--- sa_driver.f Tue May 2 12:05:09 2006
***************
*** 991,997 ****
dyij = acrd(2,jatm) - yi
dzij = acrd(3,jatm) - zi
d2 = dxij**2 + dyij**2 + dzij**2
! if ( d2 >= (ri + rj)**2 ) cycle
! setting up indexes ...
--- 991,997 ----
dyij = acrd(2,jatm) - yi
dzij = acrd(3,jatm) - zi
d2 = dxij**2 + dyij**2 + dzij**2
! if ( d2 >= (ri + rj)**2 .or. d2 <= (ri - rj)**2 ) cycle
! setting up indexes ...
------------------------------------------------------------------------------
Temporary workarounds: none
Received on Wed May 03 2006 - 06:07:11 PDT