********> bugfix.37
Correction Author: David A. Pearlman
Correction Date: 3/10/92
Programs: SANDER
Severity: moderate
Problem:
When using time-averaged restraints, if you explicitly set
the characteristic time for exponential decay (VALUE1) to 0.0,
this value will not default to a very large value. The manual claims
this will be the default used when VALUE1 is set to 0.0. (Such a
large value would result in no exponential decay weighting).
Instead, a value of 1.0D-7 will be used, which will result in
precipitous exponential decay.
If VALUE1 is not specified in the &wt namelist where
TYPE=(DISAVE, ANGAVE or TORAVE), or if VALUE1 is explicitly set
to any non-0 value, the program will work correctly. In a formatted
style weight change line with TYPE=(DISAVE, ANGAVE or TORAVE) one
*must* set VALUE1 to a non-zero value.
Affects:
The md trajectory may become unstable. Alternatively, you may
observe that the restraint violations appear to be increasing
(or at least not decreasing) as the simulation progresses.
Cause:
The default value was not being set in accordence with the manual.
Fix: Make the following change
***To routine NMRRED in src/sander/nmrred.f:
*** OLD nmrred.f
--- NEW nmrred.f
***************
*** 495,500
C IF (NEXACT(JDX).EQ.0) NEXACT(JDX) = MAX(IMULT,1)
IF (IPOWER(JDX).EQ.0) IPOWER(JDX) = NINT(VALUE2)
IMULT = 0
VALUE2 = VALUE1
END IF
C
--- 495,501 -----
C IF (NEXACT(JDX).EQ.0) NEXACT(JDX) = MAX(IMULT,1)
IF (IPOWER(JDX).EQ.0) IPOWER(JDX) = NINT(VALUE2)
IMULT = 0
+ IF (VALUE1.LT.ZERNER) VALUE1 = 1.0D+7
VALUE2 = VALUE1
END IF
C
Temporary workarounds:
If you want the to force no exponential decay weighting, set
VALUE1 to a value .GE.1.0D+6.
Routines affected:
SANDER Routine NMRRED in .../amber4/sander/nmrred.f