******** bugfix.20, Rev A Correction Authors: David A. Pearlman and Bill Ross Correction Date: 11/08/91 Revision Date: 1/28/92 Program: minmd Severity: serious Revision notice: The fix described in the original bugfix worked on some machines, but did not address the underlying reason for the observed bug. The bug has now been located and the fix is described here. Replace bugfix.20 with this bugfix report. This fix will work whether or not you have implemented the original bugfix.20, which is now superfluous. Problem: In some cases, the temperature behavior for md runs is wrong. The temperature drops to 0.0 as the run progresses. This behavior is observed only for certain sets of input conditions (such as those where a belly is used). spminmd will also crash under these conditions on some machines. This problem can only arise when SHAKE is not being employed (i.e. NTC = 1). Affects: The reported temperature will quickly start to drop, and will continue to drop to 0.0. The drop will occur despite the fact that the user has requested temperature scaling to maintain a non-zero target temperature. spminmd may crash as well. Cause: A variable was not initialized to 0 in the case where SHAKE constraints were not being used. Fix: ---------------(Rev A) Add the indicated ('+') line to src/minmd/runmd.f (without the '+') *** OLD runmd.f --- NEW runmd.f *************** *** 101,106 endif if(ntc.eq.1) then nct = 0 endif c c write(6,'(t2,''nct = '',i5,'' ncons = '',i5)')nct,ncons --- 101,107 ----- endif if(ntc.eq.1) then nct = 0 + ncons = 0 endif c c write(6,'(t2,''nct = '',i5,'' ncons = '',i5)')nct,ncons ---------------(still valid from original bugfix): To make the appropriate correction, go to the directory cd .../amber4/src/minmd Edit the Makefile .../amber4/src/minmd/Makefile, making the following changes. NOTE that tabs must be used to indent the ../Compile lines, since Make uses tabs for continued lines. 1. old lines: dpminmd4.o: minmd4.f ../Compile L2 -o $@ -P -DDPREC $? new lines: dpminmd4.o: minmd4.f ../Compile L1 -o $@ -P -DDPREC $? minmd4.o: minmd4.f ../Compile L1 -P minmd4.f (Two changes; for dpminmd4, the only change is the compilation level L2 is changed to L1; An additional two lines are added to do the single precision compilation of minmd4.f at level L1) 2. add lines: runmd.o: runmd.f ../Compile L1 -o $@ -P $? runmin.o: runmin.f ../Compile L1 -o $@ -P $? (These lines ensure that the single precision runmd and runmin routines get compiled at L1 like the double precision versions. This fixes the crashing spminmd problem.) ---------------(could be undone from original bugfix but not important): The L0 Compile flag in minmd/Makefile could be set to L1. --------------- Temporary workarounds: The program SANDER does not exhibit this problem, and can be used with the same input as MINMD to carry out MD. (The only exception is that if NTT=2 in MINMD, this must be changed to NTT=5 in SANDER). Files affected: amber4/src/minmd/runmd.f amber4/src/minmd/Makefile amber4/src/Machine/Machine.fps500