********> bugfix.28 Correction Author: David A. Pearlman Correction Date: 1/2/92 Programs: sander Severity: moderate Problem: On machines where the "portable" namelist implementation has been used, one cannot set the values of NOSCAL(i), i=2,ISCALE. These values always default to the value of .true. NOSCAL(i) is only used when NOESY volume restraints are being imposed (NMRMAX=2 or 3), and affects whether the additional scale factors in the refinement will be refined or fixed at their initial values. Note that this problem will ONLY manifest itself when all of the following conditions are met: A) You are not using the machine intrinsic namelist support, i.e. there is no -DREGNML flag in the MACHINEFLAGS statement in the src/MACHINE file, so you are using the "portable" namelist. For most machines, the supplied MACHINE files will use the intrinsic namelist support, if it exists (if it is buggy, portable namelist is used). B) You are performing NOESY volume refinement (NMRMAX = 2 or 3). There is no problem for standard NOE distance refinements (NMRMAX=1) or for refinements with no restraints or weight change cards (NMRMAX=0). C) You wish to allow one or more of the added scaling parameters, other than the first one, to vary during refinement. Affects: Regardless of the values specified for NOSCAL(i), i=2,ISCALE, the corresponding scale factors would be held fixed at their initial values. Cause: An array used with the portable namelist was incorrectly initialized. The result would be that NOSCAL was considered a scalar value, not an array, in processing the namelist. Fix: In routine MDREAD in src/sander/mdread.f make the following changes: *********** old lines: ********** # ifdef DPREC parameter (MXNAM=89,ATTNAM1=10*MXVAR,ATTNAM2=10*MXVAR+3) # else parameter (MXNAM=89,ATTNAM1=10*MXVAR,ATTNAM2=10*MXVAR+2) # endif *********** new lines: ********** # ifdef DPREC parameter (MXNAM=89,ATTNAM1=10*MXVAR+1,ATTNAM2=10*MXVAR+3) # else parameter (MXNAM=89,ATTNAM1=10*MXVAR+1,ATTNAM2=10*MXVAR+2) # endif ********************************* *********** old lines: ********** data attnam / * 3,1,1,1,1,1, 1,1,1,1,1,3, 3,1,1,1,1,3, 3,3,3,1,3,3, * 3,1,1,1,1,1, 1,1,1,3,3,1, 1,1,3,1,1,1, 1,1,1,1,3,3, * 3,3,1,1,1,1, 1,1,1,1,1,1, 1,1,3,1,1,1, 3,1,1,3,3,1, * 1,ATTNAM2,3,3,1,1, * 1,3,3,ATTNAM1,3,1, * 1,1,3,3,1/ # else data attnam / * 2,1,1,1,1,1, 1,1,1,1,1,2, 2,1,1,1,1,2, 2,2,2,1,2,2, * 2,1,1,1,1,1, 1,1,1,2,2,1, 1,1,2,1,1,1, 1,1,1,1,2,2, * 2,2,1,1,1,1, 1,1,1,1,1,1, 1,1,2,1,1,1, 2,1,1,2,2,1, * 1,ATTNAM2,2,2,1,1, * 1,2,2,ATTNAM1,2,1, * 1,1,2,2,1/ *********** new lines: ********** data attnam / * 3,1,1,1,1,1, 1,1,1,1,1,3, 3,1,1,1,1,3, 3,3,3,1,3,3, * 3,1,1,1,1,1, 1,1,1,3,3,1, 1,1,3,1,1,1, 1,1,1,1,3,3, * 3,3,1,1,1,1, 1,1,1,1,1,1, 1,1,3,1,1,1, 3,1,1,3,3,1, **> * 1,ATTNAM2,3,3,1,ATTNAM1, **> * 1,3,3,3,3,1, * 1,1,3,3,1/ # else data attnam / * 2,1,1,1,1,1, 1,1,1,1,1,2, 2,1,1,1,1,2, 2,2,2,1,2,2, * 2,1,1,1,1,1, 1,1,1,2,2,1, 1,1,2,1,1,1, 1,1,1,1,2,2, * 2,2,1,1,1,1, 1,1,1,1,1,1, 1,1,2,1,1,1, 2,1,1,2,2,1, **> * 1,ATTNAM2,2,2,1,ATTNAM1, **> * 1,2,2,2,2,1, * 1,1,2,2,1/ (only lines noted by a "**>" are changed. Do not include the "**>" marker when making the change). ********************************* Temporary workarounds: None when all of the aforementioned conditions are met. Routines affected: SANDER: Routine MDREAD in file .../amber4/src/sander/mdread.f