Correction Author: David A. Pearlman Correction Date: 9/5/91 Problem: If the user specifies NTT=5 (separate solute/solvent temperature coupling) and there are no moving solute atoms (because a belly is being used and none of the solute is in the belly), the program either report erroneous temperatures or crash, depending on the floating exception handling characteristics of the host computer. This problem can occur in both Gibbs4 and sander. Cause: An implicit assumption was being made that if NTT=5 was used, there would be at least one moving solute residue. An unprotected division was carried out, where the denominator could be 0.0 if there were no moving solute residues. Workaround for older versions: If there are no moving solute residues because a belly is being used, and the belly contains no solute atoms, one should use NTT=1 rather than NTT=5. In this case, since there are no moving solute atoms, it makes no sense to separately scale the solute and solvent atoms. Fix: (applies to both Gibbs4 and sander. For gibbs4, modify routine RUNMD, which is in file giba.f: For sander, modify routine RUNMD, which is in file runmd.f ) 1) Add the data initialization to the subroutine RUNMD The following two statements should be inserted immediately following the statement "EQUIVALENCE (VIR(1),ENER(19)) SAVE SMALL DATA SMALL/1.0D-7/ 2) Replace the statements in RUNMD: ELSE IF (NTT.EQ.5) THEN SCALP = SQRT(1.0+DTTP*(EKINP0/EKGP-1.0)) with ELSE IF (NTT.EQ.5) THEN SCALP = 1.0D0 IF (EKGP.GT.SMALL) SCALP = SQRT(1.0+DTTP*(EKINP0/EKGP-1.0))