********>Master Bugfix File - Amber 9 Bug fixes 1 to 43 Programs: AMBER 9 Description: This is the master bugfix file for Amber 9. It contains all of the bugfixes released to date in a single patch script. Usage: Save this file in your $AMBERHOME directory and then apply this patch file to your amber 9 distribution as follows: cd $AMBERHOME patch -p0 -N -r patch_rejects Bugfix 1: Author: Dave Case Date: 04/21/2006 Programs: ptraj Description: ptraj.c has a executable statement before declarations inside a block. This is not correct, but most compilers allow it. Fix: apply the following patch to amber9/src/ptraj/ptraj.c ------------------------------------------------------------------------------ *** src/ptraj/ptraj.c 3 Apr 2006 23:35:48 -0000 9.0 --- src/ptraj/ptraj.c 21 Apr 2006 15:08:09 -0000 *************** *** 4033,4044 **** * Do recursive calls as necessary for outputing LES trajectories */ if ( outInfo->les_action != LES_NONE && outInfo->les_status == LES_READY ) { - outInfo->les_status = LES_DONE; int natomCL = lesSize( atoms ); double* xrep = safe_malloc( sizeof( double ) * natomCL ); double* yrep = safe_malloc( sizeof( double ) * natomCL ); double* zrep = safe_malloc( sizeof( double ) * natomCL ); if ( outInfo->les_action == LES_SPLIT ) { int icopy=0; --- 4033,4045 ---- * Do recursive calls as necessary for outputing LES trajectories */ if ( outInfo->les_action != LES_NONE && outInfo->les_status == LES_READY ) { int natomCL = lesSize( atoms ); double* xrep = safe_malloc( sizeof( double ) * natomCL ); double* yrep = safe_malloc( sizeof( double ) * natomCL ); double* zrep = safe_malloc( sizeof( double ) * natomCL ); + + outInfo->les_status = LES_DONE; if ( outInfo->les_action == LES_SPLIT ) { int icopy=0; ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 2: Author: Ray Luo Date: 05/2/2006 Programs: pbsa, sander Description: sa_driver.f has a statement causing a negative number to be taken square root. This is not correct, but many compilers allow it. Fix: apply the following patch to amber9/src/pbsa/sa_driver.f, and to amber9/src/sander/sa_driver.f ------------------------------------------------------------------------------ *** src/pbsa/sa_driver.f Mon Apr 3 23:35:48 2006 --- src/pbsa/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 ... *** src/sander/sa_driver.f Mon Apr 3 23:35:48 2006 --- src/sander/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 ********>Bugfix 3: Author: Mengjuei Hsieh and Dave Case Date: 05/7/2006 Programs: LEaP Description: The configure script creates an XLIBS variable with a space that should not be there. Fix: apply the following patch to amber9/src/configure ------------------------------------------------------------------------------ *** src/configure 3 Apr 2006 23:34:24 -0000 9.0 --- src/configure 8 May 2006 00:06:38 -0000 *************** *** 203,209 **** use_lmod=LMOD_UNAVAILABLE fi xhome='/usr/X11R6' ! xlibs="-L $xhome/lib" machine=`uname -m` if [ "$machine" = "em64t" ] || [ "$machine" = "x86_64" ] || [ "$x86_64" = "yes" ]; then --- 203,209 ---- use_lmod=LMOD_UNAVAILABLE fi xhome='/usr/X11R6' ! xlibs="-L$xhome/lib" machine=`uname -m` if [ "$machine" = "em64t" ] || [ "$machine" = "x86_64" ] || [ "$x86_64" = "yes" ]; then *************** *** 710,717 **** fflags="-tp p7 -O1" foptflags="-tp p7 -Mscalarsse -Mvect=sse -Mflushz -fast -O3" - xlibs="-L $xhome/lib" - moduledir='-module $(EMPTY)' if [ $static = "yes" ]; then static_flag='-Bstatic' --- 710,715 ---- *************** *** 867,873 **** loadptraj="$load" xhome='/usr/lib32' ! xlibs="-L $xhome" ;; ####################### HP ############################ --- 865,871 ---- loadptraj="$load" xhome='/usr/lib32' ! xlibs="-L$xhome" ;; ####################### HP ############################ ------------------------------------------------------------------------------ Temporary workarounds: Manually edit config.h to remove the extra space. ********>Bugfix 4: Author: Junmei Wang (bug reported by Eric Pettersen) Date: 05/9/2006 Programs: Antechamber Description: The ring analysis routine can try to malloc 0 bytes, which can cause problems on some systems. Fix: apply the following patch to amber9/src/antechamber/ring.c ------------------------------------------------------------------------------ diff -c -r9.0 ring.c *** src/antechamber/ring.c 3 Apr 2006 23:34:26 -0000 9.0 --- src/antechamber/ring.c 9 May 2006 17:20:25 -0000 *************** *** 66,71 **** --- 66,72 ---- int tmpint; int index; + if( ringnum == 0 ) return; ringbak = (RING *) malloc(sizeof(RING) * ringnum ); if (ringbak == NULL) { fprintf(stderr, "memory allocation error for *ringbak\n"); ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 5: Author: Yong Duan Date: 06/02/2006 Programs: Anything using the ff03 force field Description: There is a bad line in frcmod.ff03 in Amber 9. Any prmtop files created using this will have to be re-made. Fix: apply the following patch to amber9/dat/leap/parm/frcmod.ff03 ------------------------------------------------------------------------------ diff -c -r9.0 frcmod.ff03 *** dat/leap/parm/frcmod.ff03 4 Apr 2006 01:05:51 -0000 9.0 --- dat/leap/parm/frcmod.ff03 2 Jun 2006 16:29:21 -0000 *************** *** 17,27 **** C -N -CT-C 1 0.2259 0.00 -3. C -N -CT-C 1 0.3451 180.00 -2. C -N -CT-C 1 1.0159 0.00 1. - CT-CT-N -C 1 0.0000 180.0 -4. - CT-CT-C -N 1 0.0560 0.00 -3. CT-CT-C -N 1 0.0000 0.0 -4. CT-CT-C -N 1 0.0657 180.00 -2. CT-CT-C -N 1 0.7784 180.00 1. C -N -CT-CT 1 0.2270 180.00 -3. C -N -CT-CT 1 0.8836 180.00 -2. C -N -CT-CT 1 0.3537 180.00 1. --- 17,27 ---- C -N -CT-C 1 0.2259 0.00 -3. C -N -CT-C 1 0.3451 180.00 -2. C -N -CT-C 1 1.0159 0.00 1. CT-CT-C -N 1 0.0000 0.0 -4. + CT-CT-C -N 1 0.0560 0.00 -3. CT-CT-C -N 1 0.0657 180.00 -2. CT-CT-C -N 1 0.7784 180.00 1. + C -N -CT-CT 1 0.0000 000.00 -4. C -N -CT-CT 1 0.2270 180.00 -3. C -N -CT-CT 1 0.8836 180.00 -2. C -N -CT-CT 1 0.3537 180.00 1. ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 6: Author: Istvan Kolosváry Date: 06/19/2006 Programs: lmod Description: The "make clean" command will remove some object files that should not be removed. Fix: apply the following patch to amber9/src/lmod/lmod/Makefile and to amber9/src/lmod/xmin/Makefile ------------------------------------------------------------------------------ *** src/lmod/lmod/Makefile 3 Apr 2006 23:35:29 -0000 9.0 --- src/lmod/lmod/Makefile 19 Jun 2006 06:38:50 -0000 *************** *** 16,20 **** $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f *.o _*.f --- 16,20 ---- $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o _*.f *** src/lmod/xmin/Makefile 3 Apr 2006 23:35:29 -0000 9.0 --- src/lmod/xmin/Makefile 19 Jun 2006 06:38:50 -0000 *************** *** 16,20 **** $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f *.o _*.f --- 16,20 ---- $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o _*.f ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 7: Author: Kateryna Miroshnychenko Date: 07/10/2006 Programs: ambmask Description: There is a bad conversion from input charges to internal charge units. Fix: apply the following patch to amber9/src/sander/ambmask.f ------------------------------------------------------------------------------ *** src/sander/ambmask.f 2006-04-04 02:35:54.000000000 +0300 --- src/sander/ambmask.f 2006-07-10 16:15:48.000000000 +0300 *************** *** 262,268 **** type = 'CHARGE' call nxtsec(nf, 6, 0,fmtin, type, fmt, iok) read(nf,fmt) (chg(i), i=1,natom) ! chg(1:i) = chg(1:i)*INV_AMBER_ELECTROSTATIC if( iok.eq.-1 ) then ! this is an old-style prmtop file ! old style prmtop has to be read sequentially, even though --- 262,268 ---- type = 'CHARGE' call nxtsec(nf, 6, 0,fmtin, type, fmt, iok) read(nf,fmt) (chg(i), i=1,natom) ! chg(1:natom) = chg(1:natom)*INV_AMBER_ELECTROSTATIC if( iok.eq.-1 ) then ! this is an old-style prmtop file ! old style prmtop has to be read sequentially, even though ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 8: Author: Bob Duke Date: 08/01/06 Programs: pmemd Description: The iwrap=1 option does not work correctly. Fix: apply the following patch to amber9/src/pmemd/src/pbc.fpp ------------------------------------------------------------------------------ *** src/pmemd/src/pbc.fpp 2006-04-03 19:35:48.000000000 -0400 --- src/pmemd/src/pbc.fpp 2006-08-02 11:07:19.000000000 -0400 *************** *** 769,774 **** --- 769,775 ---- crd(3, j) * recip(3, 3) end do + #if 0 f1 = f1/molsiz(i) f2 = f2/molsiz(i) f3 = f3/molsiz(i) *************** *** 784,789 **** --- 785,799 ---- g3 = f3 if (f3 .lt. 0.d0) g3 = f3 + 1.d0 if (f3 .ge. 1.d0) g3 = f3 - 1.d0 + #else + f1 = f1/molsiz(i) - 0.5d0 + f2 = f2/molsiz(i) - 0.5d0 + f3 = f3/molsiz(i) - 0.5d0 + + g1 = f1 - anint(f1) + g2 = f2 - anint(f2) + g3 = f3 - anint(f3) + #endif if (f1 .ne. g1 .or. f2 .ne. g2 .or. f3 .ne. g3) then tran(1) = (g1 - f1) * ucell(1, 1) + (g2 - f2) * ucell(1, 2) + & ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 9: Author: Dave Case, based on a report by Jan Fredin Date: 08/10/06 Programs: sander, pbsa Description: There is some IPS code in the pbsa routines that should never be executed. But if it is, a divide by zero error can occur. The patch removes the offending code. Fix: apply the following patch to amber9/src/sander/pb_direct.f *and* to amber9/src/pbsa/pb_direct.f ------------------------------------------------------------------------------ *** src/sander/pb_direct.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/sander/pb_direct.f 11 Aug 2006 06:04:14 -0000 *************** *** 490,499 **** implicit none - ! Common variables - !WXW sgld and ips head file - # include "sgld.h" - ! Passed variables integer natom, iprshrt(*), iar1pb(6,0:natom) --- 490,495 ---- *************** *** 510,521 **** _REAL_ dx, dy, dz, d2inv, r6 _REAL_ df2, f2, f1, df, fw1, fw2, fw3 - !WXW - _REAL_ uips,uips2,uips6,twou,twou2,twou6,twou12,rinv - _REAL_ pipse,dpipse,eipse,dipse,PVC,PVCU,DVCU,PVA,PVAU,DVAU - !WXW - - ! initialization eel = ZERO; enb = ZERO --- 506,511 ---- *************** *** 528,536 **** jfirst1 = iar1pb(1, i) + 1; jlast1 = iar1pb(2, i) jfirst2 = iar1pb(2, i) + 1; jlast2 = iar1pb(4, i) - !WXW Get IPS NB count - IF(TEIPS.OR.TVIPS)NNBIPS=NNBIPS+(jlast2-jfirst1+1)*2 - ! loop over direct coulombic pairs do jp = jfirst1, jlast1 --- 518,523 ---- *************** *** 539,582 **** d2inv = ONE/(dx**2+dy**2+dz**2) df2 = cn3pb(jp)*sqrt(d2inv) eel = eel+df2 - !WXW IPS for electrostatic - IF(TEIPS)THEN - uips=1.0d0/rips/rinv - uips2=uips*uips - twou2=2.0d0-uips2 - twou=sqrt(twou2) - pipse=bipse0+uips2*(bipse1+uips2*(bipse2+uips2*bipse3)) - dpipse=2.0d0*bipse1+uips2*(4.0d0*bipse2+6.0d0*uips2*bipse3) - dipse=df2*uips*(dpipse+pipse/twou2)/twou*uips2 - eipse=df2*uips*(pipse/twou-pipsec) - eel=eel+eipse - df2=df2-dipse - ENDIF - !WXW r6 = d2inv**3 f2 = cn2pb(jp)*r6 f1 = cn1pb(jp)*(r6*r6) enb = enb + (f2-f1) df = (df2+SIX*((f2-f1)-f1))*d2inv - !WXW IPS for L-J - IF(TVIPS)THEN - ! L-J r6 term - UIPS2=1.0D0/(D2INV*RIPS2) - UIPS6=UIPS2*UIPS2*UIPS2 - TWOU2=2.0D0-UIPS2 - TWOU6=TWOU2*TWOU2*TWOU2 - TWOU12=TWOU6*TWOU6 - PVC=BIPSVC0+UIPS2*(BIPSVC1+UIPS2*(BIPSVC2+UIPS2*BIPSVC3)) - PVCU=2.0D0*BIPSVC1+UIPS2*(4.0D0*BIPSVC2+6.0D0*BIPSVC3*UIPS2) - DVCU=(PVCU+6.0D0*PVC/TWOU2)/TWOU6 - ! L-J r12 term - PVA=BIPSVA0+UIPS2*(BIPSVA1+UIPS2*(BIPSVA2+UIPS2*BIPSVA3)) - PVAU=2.0D0*BIPSVA1+UIPS2*(4.0D0*BIPSVA2+6.0D0*BIPSVA3*UIPS2) - DVAU=(PVAU+12.0D0*PVA/TWOU2)/TWOU12 - enb=enb-(f1*(PVA/TWOU12-PIPSVAC)*UIPS6-f2*(PVC/TWOU6-PIPSVCC))*UIPS6 - df=df-(f1*DVAU*uips6-f2*DVCU)*uips6/RIPS2 - ENDIF - !WXW fw1 = dx*df; fw2 = dy*df; fw3 = dz*df dumx = dumx + fw1 dumy = dumy + fw2 --- 526,536 ---- *************** *** 597,621 **** f1 = cn1pb(jp)*(r6*r6) enb = enb + (f2-f1) df = SIX*((f2-f1)-f1)*d2inv - !WXW IPS for L-J - IF(TVIPS)THEN - ! L-J r6 term - UIPS2=1.0D0/(D2INV*RIPS2) - UIPS6=UIPS2*UIPS2*UIPS2 - TWOU2=2.0D0-UIPS2 - TWOU6=TWOU2*TWOU2*TWOU2 - TWOU12=TWOU6*TWOU6 - PVC=BIPSVC0+UIPS2*(BIPSVC1+UIPS2*(BIPSVC2+UIPS2*BIPSVC3)) - PVCU=2.0D0*BIPSVC1+UIPS2*(4.0D0*BIPSVC2+6.0D0*BIPSVC3*UIPS2) - DVCU=(PVCU+6.0D0*PVC/TWOU2)/TWOU6 - ! L-J r12 term - PVA=BIPSVA0+UIPS2*(BIPSVA1+UIPS2*(BIPSVA2+UIPS2*BIPSVA3)) - PVAU=2.0D0*BIPSVA1+UIPS2*(4.0D0*BIPSVA2+6.0D0*BIPSVA3*UIPS2) - DVAU=(PVAU+12.0D0*PVA/TWOU2)/TWOU12 - enb=enb-(f1*(PVA/TWOU12-PIPSVAC)*UIPS6-f2*(PVC/TWOU6-PIPSVCC))*UIPS6 - df=df-(f1*DVAU*uips6-f2*DVCU)*uips6/RIPS2 - ENDIF - !WXW fw1 = dx*df; fw2 = dy*df; fw3 = dz*df dumx = dumx + fw1 dumy = dumy + fw2 --- 551,556 ---- *** src/pbsa/pb_direct.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/pbsa/pb_direct.f 11 Aug 2006 06:04:14 -0000 *************** *** 490,499 **** implicit none - ! Common variables - !WXW sgld and ips head file - # include "sgld.h" - ! Passed variables integer natom, iprshrt(*), iar1pb(6,0:natom) --- 490,495 ---- *************** *** 510,521 **** _REAL_ dx, dy, dz, d2inv, r6 _REAL_ df2, f2, f1, df, fw1, fw2, fw3 - !WXW - _REAL_ uips,uips2,uips6,twou,twou2,twou6,twou12,rinv - _REAL_ pipse,dpipse,eipse,dipse,PVC,PVCU,DVCU,PVA,PVAU,DVAU - !WXW - - ! initialization eel = ZERO; enb = ZERO --- 506,511 ---- *************** *** 528,536 **** jfirst1 = iar1pb(1, i) + 1; jlast1 = iar1pb(2, i) jfirst2 = iar1pb(2, i) + 1; jlast2 = iar1pb(4, i) - !WXW Get IPS NB count - IF(TEIPS.OR.TVIPS)NNBIPS=NNBIPS+(jlast2-jfirst1+1)*2 - ! loop over direct coulombic pairs do jp = jfirst1, jlast1 --- 518,523 ---- *************** *** 539,582 **** d2inv = ONE/(dx**2+dy**2+dz**2) df2 = cn3pb(jp)*sqrt(d2inv) eel = eel+df2 - !WXW IPS for electrostatic - IF(TEIPS)THEN - uips=1.0d0/rips/rinv - uips2=uips*uips - twou2=2.0d0-uips2 - twou=sqrt(twou2) - pipse=bipse0+uips2*(bipse1+uips2*(bipse2+uips2*bipse3)) - dpipse=2.0d0*bipse1+uips2*(4.0d0*bipse2+6.0d0*uips2*bipse3) - dipse=df2*uips*(dpipse+pipse/twou2)/twou*uips2 - eipse=df2*uips*(pipse/twou-pipsec) - eel=eel+eipse - df2=df2-dipse - ENDIF - !WXW r6 = d2inv**3 f2 = cn2pb(jp)*r6 f1 = cn1pb(jp)*(r6*r6) enb = enb + (f2-f1) df = (df2+SIX*((f2-f1)-f1))*d2inv - !WXW IPS for L-J - IF(TVIPS)THEN - ! L-J r6 term - UIPS2=1.0D0/(D2INV*RIPS2) - UIPS6=UIPS2*UIPS2*UIPS2 - TWOU2=2.0D0-UIPS2 - TWOU6=TWOU2*TWOU2*TWOU2 - TWOU12=TWOU6*TWOU6 - PVC=BIPSVC0+UIPS2*(BIPSVC1+UIPS2*(BIPSVC2+UIPS2*BIPSVC3)) - PVCU=2.0D0*BIPSVC1+UIPS2*(4.0D0*BIPSVC2+6.0D0*BIPSVC3*UIPS2) - DVCU=(PVCU+6.0D0*PVC/TWOU2)/TWOU6 - ! L-J r12 term - PVA=BIPSVA0+UIPS2*(BIPSVA1+UIPS2*(BIPSVA2+UIPS2*BIPSVA3)) - PVAU=2.0D0*BIPSVA1+UIPS2*(4.0D0*BIPSVA2+6.0D0*BIPSVA3*UIPS2) - DVAU=(PVAU+12.0D0*PVA/TWOU2)/TWOU12 - enb=enb-(f1*(PVA/TWOU12-PIPSVAC)*UIPS6-f2*(PVC/TWOU6-PIPSVCC))*UIPS6 - df=df-(f1*DVAU*uips6-f2*DVCU)*uips6/RIPS2 - ENDIF - !WXW fw1 = dx*df; fw2 = dy*df; fw3 = dz*df dumx = dumx + fw1 dumy = dumy + fw2 --- 526,536 ---- *************** *** 597,621 **** f1 = cn1pb(jp)*(r6*r6) enb = enb + (f2-f1) df = SIX*((f2-f1)-f1)*d2inv - !WXW IPS for L-J - IF(TVIPS)THEN - ! L-J r6 term - UIPS2=1.0D0/(D2INV*RIPS2) - UIPS6=UIPS2*UIPS2*UIPS2 - TWOU2=2.0D0-UIPS2 - TWOU6=TWOU2*TWOU2*TWOU2 - TWOU12=TWOU6*TWOU6 - PVC=BIPSVC0+UIPS2*(BIPSVC1+UIPS2*(BIPSVC2+UIPS2*BIPSVC3)) - PVCU=2.0D0*BIPSVC1+UIPS2*(4.0D0*BIPSVC2+6.0D0*BIPSVC3*UIPS2) - DVCU=(PVCU+6.0D0*PVC/TWOU2)/TWOU6 - ! L-J r12 term - PVA=BIPSVA0+UIPS2*(BIPSVA1+UIPS2*(BIPSVA2+UIPS2*BIPSVA3)) - PVAU=2.0D0*BIPSVA1+UIPS2*(4.0D0*BIPSVA2+6.0D0*BIPSVA3*UIPS2) - DVAU=(PVAU+12.0D0*PVA/TWOU2)/TWOU12 - enb=enb-(f1*(PVA/TWOU12-PIPSVAC)*UIPS6-f2*(PVC/TWOU6-PIPSVCC))*UIPS6 - df=df-(f1*DVAU*uips6-f2*DVCU)*uips6/RIPS2 - ENDIF - !WXW fw1 = dx*df; fw2 = dy*df; fw3 = dz*df dumx = dumx + fw1 dumy = dumy + fw2 --- 551,556 ---- ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 10: Author: Dave Case, reported by Kazuo Ohta Date: 08/14/06 Programs: top2mol2 Description: The main() routine of this program does not include an explicit "return 0;" statement at the end. This is perfectly legal C code, but it seems that in some circumstances (MacOS/gcc4 has been reported) it generates an error. Fix: apply the following patch to amber9/src/antechamber/top2mol2.c ------------------------------------------------------------------------------ *** src/antechamber/top2mol2.c 3 Apr 2006 23:34:26 -0000 9.0 --- src/antechamber/top2mol2.c 14 Aug 2006 17:20:20 -0000 *************** *** 818,822 **** --- 818,823 ---- } write(); fclose(fpout); + return 0; } ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 11: Author: Dave Case, reported by Jan Fredin Date: 08/17/06 Programs: sander Description: The minimization initialization in sander can attept a divide by zero. No use is made of the returned value, so this is generally innocuous, but it can cause problems if a fatal exception is raised as a result. Fix: apply the following patch to amber9/src/sander/runmin.f ------------------------------------------------------------------------------ *** src/sander/runmin.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/sander/runmin.f 17 Aug 2006 22:36:33 -0000 *************** *** 128,133 **** --- 128,134 ---- fold = 0.0d0 dxst = dx0 linmin = 0 + gmin = 1.d0 if (iscale > 0) n = n + iscale ! ----- PARTITION THE WORKING ARRAY ----- ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 12: Author: Scott Brozell Date: 08/17/06 Programs: Antechamber Description: Files of type prepi or prepc with a length greater than 139 lines cause antechamber programs to fail. The -o output file contains garbage. The standard output usually contains: Info: the atom number exceeds the MAXATOM, reallocate memory automatically Unrecognized atomic name , exit Fix: apply the following patch to amber9/src/antechamber/prep.c *and* to amber9/src/antechamber/parmchk.c ------------------------------------------------------------------------------ *** src/antechamber/prep.c 3 Apr 2006 23:34:26 -0000 9.0 --- src/antechamber/prep.c 18 Aug 2006 05:02:19 -0000 *************** *** 38,48 **** if (fgets(line, 150, fpin) == NULL) break; i++; - if (i > (*cinfo).maxatom + 11) { - printf - ("\nInfo: the atom number exceeds the MAXATOM, reallocate memory automatically"); - overflow_flag = 1; - } if (i == 5) { sscanf(line, "%s", tmpchar); (*minfo).resname[0] = tmpchar[0]; --- 38,43 ---- *************** *** 61,70 **** if (strlen(line) == 1 && readindex == 3) readindex = 4; if (readindex == 1) { sscanf(line, "%d%s%s%s%d%d%d%lf%lf%lf%lf", &tmpint1, tmpchar1, tmpchar2, tmpchar3, &tmpint2, &tmpint3, &tmpint4, ! &tmpfloat1, &tmpfloat2, &tmpfloat3, &atm[i - 8].charge); ! number++; if (i == 8) { atm[0].x = 0.0; atm[0].y = 0.0; --- 56,74 ---- if (strlen(line) == 1 && readindex == 3) readindex = 4; if (readindex == 1) { + number++; + if (number - 3 > (*cinfo).maxatom ) { + printf("\nInfo: the atom number exceeds the MAXATOM," + " reallocate memory automatically"); + overflow_flag = 1; + } + double tmpcharge; sscanf(line, "%d%s%s%s%d%d%d%lf%lf%lf%lf", &tmpint1, tmpchar1, tmpchar2, tmpchar3, &tmpint2, &tmpint3, &tmpint4, ! &tmpfloat1, &tmpfloat2, &tmpfloat3, &tmpcharge); ! if (overflow_flag == 0) { ! atm[i - 8].charge = tmpcharge; ! } if (i == 8) { atm[0].x = 0.0; atm[0].y = 0.0; *************** *** 165,175 **** if (fgets(line, 150, fpin) == NULL) break; i++; - if (i > (*cinfo).maxatom + 11) { - printf - ("\nInfo: the atom number exceeds the MAXATOM, reallocate memory automatically"); - overflow_flag = 1; - } if (i == 5) { sscanf(line, "%s", tmpchar); (*minfo).resname[0] = tmpchar[0]; --- 169,174 ---- *************** *** 189,194 **** --- 188,198 ---- readindex = 4; if (readindex == 1) { number++; + if (number - 3 > (*cinfo).maxatom) { + printf("\nInfo: the atom number exceeds the MAXATOM," + " reallocate memory automatically"); + overflow_flag = 1; + } if (overflow_flag == 0) { sscanf(line, "%d%s%s%s%lf%lf%lf%lf", &tmpint1, tmpchar1, tmpchar2, tmpchar3, &tmpfloat1, &tmpfloat2, *** src/antechamber/parmchk.c 3 Apr 2006 23:34:26 -0000 9.0 --- src/antechamber/parmchk.c 18 Aug 2006 05:17:59 -0000 *************** *** 3773,3780 **** rmol2(ifilename, &atomnum, atom, &bondnum, bond_array, &cinfo, &minfo, 1); if (overflow_flag) { ! cinfo.maxatom = atomnum + 10; ! cinfo.maxbond = bondnum + 10; free(atom); free(bond_array); atom = (ATOM *) malloc(sizeof(ATOM) * cinfo.maxatom); --- 3773,3782 ---- rmol2(ifilename, &atomnum, atom, &bondnum, bond_array, &cinfo, &minfo, 1); if (overflow_flag) { ! cinfo.maxatom = (atomnum > cinfo.maxatom) ? atomnum : cinfo.maxatom; ! cinfo.maxbond = (bondnum > cinfo.maxbond) ? bondnum : cinfo.maxbond; ! cinfo.maxatom += 10; /* add some fudge */ ! cinfo.maxbond += 10; /* add some fudge */ free(atom); free(bond_array); atom = (ATOM *) malloc(sizeof(ATOM) * cinfo.maxatom); ------------------------------------------------------------------------------ Temporary workarounds: use antechamber programs from Amber 8. ********>Bugfix 13: Author: Junmei Wang, reported by Kazua Ohta Date: 08/18/06 Programs: Antechamber Description: The memory allocations for ind_valence and ind_bondnum with malloc have problems. The size should be atomnum not bondnum. This bug may cause problems for molecules that have a greater number of atoms than number of bonds. Fix: apply the following patch to amber9/src/antechamber/bondtype.C ------------------------------------------------------------------------------ *** src/antechamber/bondtype.C 3 Apr 2006 23:34:26 -0000 9.0 --- src/antechamber/bondtype.C 18 Aug 2006 21:38:57 -0000 *************** *** 1278,1289 **** fprintf(stderr, "memory allocation error for *con_num\n"); exit(0); } ! ind_bondnum = (int *) malloc(sizeof(int) * bondnum); if (ind_bondnum == NULL) { fprintf(stderr, "memory allocation error for *ind_bondnum\n"); exit(0); } ! ind_valence = (int *) malloc(sizeof(int) * bondnum); if (ind_valence == NULL) { fprintf(stderr, "memory allocation error for *ind_valence\n"); exit(0); --- 1278,1289 ---- fprintf(stderr, "memory allocation error for *con_num\n"); exit(0); } ! ind_bondnum = (int *) malloc(sizeof(int) * atomnum); if (ind_bondnum == NULL) { fprintf(stderr, "memory allocation error for *ind_bondnum\n"); exit(0); } ! ind_valence = (int *) malloc(sizeof(int) * atomnum); if (ind_valence == NULL) { fprintf(stderr, "memory allocation error for *ind_valence\n"); exit(0); ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 14: Author: Scott Brozell, reported by Myunggi Yi Date: 08/24/06 Programs: Antechamber Description: This is a correction to bugfix 12. prep.c when patched by bugfix 12 has a declaration after executable statements inside a block. This is not correct, but most compilers allow it. Fix: apply the following patch to amber9/src/antechamber/prep.c ------------------------------------------------------------------------------ *** src/antechamber/prep.c 18 Aug 2006 05:02:19 -0000 --- src/antechamber/prep.c 24 Aug 2006 21:36:35 -0700 *************** *** 56,68 **** if (strlen(line) == 1 && readindex == 3) readindex = 4; if (readindex == 1) { number++; if (number - 3 > (*cinfo).maxatom ) { printf("\nInfo: the atom number exceeds the MAXATOM," " reallocate memory automatically"); overflow_flag = 1; } - double tmpcharge; sscanf(line, "%d%s%s%s%d%d%d%lf%lf%lf%lf", &tmpint1, tmpchar1, tmpchar2, tmpchar3, &tmpint2, &tmpint3, &tmpint4, &tmpfloat1, &tmpfloat2, &tmpfloat3, &tmpcharge); --- 56,68 ---- if (strlen(line) == 1 && readindex == 3) readindex = 4; if (readindex == 1) { + double tmpcharge; number++; if (number - 3 > (*cinfo).maxatom ) { printf("\nInfo: the atom number exceeds the MAXATOM," " reallocate memory automatically"); overflow_flag = 1; } sscanf(line, "%d%s%s%s%d%d%d%lf%lf%lf%lf", &tmpint1, tmpchar1, tmpchar2, tmpchar3, &tmpint2, &tmpint3, &tmpint4, &tmpfloat1, &tmpfloat2, &tmpfloat3, &tmpcharge); ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 15 Author: Scott Brozell, reported by Myunggi Yi Date: 08/24/2006 Programs: ptraj Description: actions.h has a trailing comma inside an enum declaration. This is nonstandard, but most compilers allow it. Fix: apply the following patch to src/ptraj/actions.h ------------------------------------------------------------------------------ *** src/ptraj/actions.h 3 Apr 2006 23:35:48 -0000 9.0 --- src/ptraj/actions.h 25 Aug 2006 05:06:50 -0000 *************** *** 206,212 **** typedef enum _transformContactsType { CONTACTS_NULL = 0, CONTACTS_FIRST, ! CONTACTS_REFERENCE, } transformContactsType; typedef struct _transformContactsInfo { --- 206,212 ---- typedef enum _transformContactsType { CONTACTS_NULL = 0, CONTACTS_FIRST, ! CONTACTS_REFERENCE } transformContactsType; typedef struct _transformContactsInfo { ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 16 Author: Dave Case Date: 08/25/2006 Programs: sander Description: the lmod.f file in sander won't compile with gfortran, because the length of a parameter string is not considered constant. Here we just hard-code the required lengths. Better solutions will be pursued for the next release Fix: apply the following patch to src/sander/lmod.f ------------------------------------------------------------------------------ *** src/sander/lmod.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/sander/lmod.f 18 Aug 2006 17:39:09 -0000 9.1 *************** *** 179,185 **** integer, parameter :: MVPM_CENTRAL_CODE = 2 character(len=*), parameter :: MVPM_FORWARD = 'forward' integer, parameter :: MVPM_FORWARD_CODE = 1 ! character(len=len(MVPM_FORWARD)) :: matrix_vector_product_method=MVPM_FORWARD integer :: mvpm_code = MVPM_FORWARD_CODE namelist /lmod/ matrix_vector_product_method --- 179,186 ---- integer, parameter :: MVPM_CENTRAL_CODE = 2 character(len=*), parameter :: MVPM_FORWARD = 'forward' integer, parameter :: MVPM_FORWARD_CODE = 1 ! !character(len=len(MVPM_FORWARD))::matrix_vector_product_method=MVPM_FORWARD ! character(len=7) :: matrix_vector_product_method=MVPM_FORWARD ! gfortran hack integer :: mvpm_code = MVPM_FORWARD_CODE namelist /lmod/ matrix_vector_product_method *************** *** 191,198 **** integer, parameter :: MC_METHOD_TOTAL_QUENCH_CODE = 2 character(len=*), parameter :: MC_METHOD_QUICK_QUENCH = 'Quick_Quench' integer, parameter :: MC_METHOD_QUICK_QUENCH_CODE = 3 ! character(len=len(MC_METHOD_QUICK_QUENCH)) :: Monte_Carlo_method & ! = MC_METHOD_METROPOLIS integer :: Monte_Carlo_method_code = MC_METHOD_METROPOLIS_CODE namelist /lmod/ Monte_Carlo_method --- 192,200 ---- integer, parameter :: MC_METHOD_TOTAL_QUENCH_CODE = 2 character(len=*), parameter :: MC_METHOD_QUICK_QUENCH = 'Quick_Quench' integer, parameter :: MC_METHOD_QUICK_QUENCH_CODE = 3 ! !character(len=len(MC_METHOD_QUICK_QUENCH)) :: Monte_Carlo_method & ! ! = MC_METHOD_METROPOLIS ! character(len=12) :: Monte_Carlo_method = MC_METHOD_METROPOLIS integer :: Monte_Carlo_method_code = MC_METHOD_METROPOLIS_CODE namelist /lmod/ Monte_Carlo_method *************** *** 254,260 **** integer, parameter :: XMIN_METHOD_PRCG_CODE = 1 character(len=*), parameter :: XMIN_METHOD_TNCG = 'TNCG' integer, parameter :: XMIN_METHOD_TNCG_CODE = 3 ! character(len=len(XMIN_METHOD_LBFGS)) :: xmin_method = XMIN_METHOD_LBFGS integer :: xmin_method_code = XMIN_METHOD_LBFGS_CODE namelist /lmod/ xmin_method --- 256,263 ---- integer, parameter :: XMIN_METHOD_PRCG_CODE = 1 character(len=*), parameter :: XMIN_METHOD_TNCG = 'TNCG' integer, parameter :: XMIN_METHOD_TNCG_CODE = 3 ! !character(len=len(XMIN_METHOD_LBFGS)) :: xmin_method = XMIN_METHOD_LBFGS ! character(len=5) :: xmin_method = XMIN_METHOD_LBFGS integer :: xmin_method_code = XMIN_METHOD_LBFGS_CODE namelist /lmod/ xmin_method ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 17 Author: Istvan Kolossvary, applied by Dave Case Date: 08/25/2006 Programs: build procedure Description: We are still trying to get the "clean" target in src/lmod to do the right thing in all circumstances. This is an update to bugfix.6 Fix: apply the following patches to src/lmod/lmod/Makefile, and to src/lmod/xmin/Makefile ------------------------------------------------------------------------------ For amber9/src/lmod/lmod/Makefile: *** src/lmod/lmod/Makefile 3 Apr 2006 23:35:29 -0000 9.0 --- src/lmod/lmod/Makefile 25 Aug 2006 16:54:17 -0000 *************** *** 16,20 **** $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o _*.f --- 16,20 ---- $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o lmod.o _*.f For amber9/src/lmod/xmin/Makefile: *** src/lmod/xmin/Makefile 3 Apr 2006 23:35:29 -0000 9.0 --- src/lmod/xmin/Makefile 25 Aug 2006 16:54:17 -0000 *************** *** 16,20 **** $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o _*.f --- 16,20 ---- $(CC) -c $(CFLAGS) $(CPPFLAGS) -O0 -o $@ $< clean: ! -/bin/rm -f ieee.o xmin.o _*.f ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 18 Author: Ross Walker Date: 09/29/2006 Programs: sander Description: QMMM Calculations in which adjust_q>0 and qmcharge>0 can print an incorrect value for the QM+MM total charge after correction. This is simply an error in the informational message and does not affect the calculation results. Internally the code is applying the correction properly it is just the message that is wrong and could potentially lead to confusion. This bugfix corrects the code so that the message is consistent with what the code is actually doing. Fix: apply the following patch to src/sander/qm_zero_charges.f ------------------------------------------------------------------------------ *** src/sander/qm_zero_charges.f 2006-09-28 16:48:14.000000000 -0700 --- src/sander/qm_zero_charges.f 2006-09-28 16:48:44.000000000 -0700 *************** *** 147,153 **** charge(closest_id) = charge(closest_id) + correction end do if (master) then ! final_q_sum = qmcharge do i = 1, natom if ((.not. atom_mask(i)) .and. (.not. mm_link_mask(i))) final_q_sum = final_q_sum + charge(i) end do --- 147,153 ---- charge(closest_id) = charge(closest_id) + correction end do if (master) then ! final_q_sum = qmcharge * AMBER_ELECTROSTATIC do i = 1, natom if ((.not. atom_mask(i)) .and. (.not. mm_link_mask(i))) final_q_sum = final_q_sum + charge(i) end do *************** *** 167,173 **** correction = q_correction / dble(natom-nquant_nlink) !Should never divide by zero here as code !returns above if nquant==natom. - i.e. pure QM run. ! final_q_sum = zero do i = 1, natom !Go through each atom adding correction to it's charge if it !is not a QM or MM Link atom. --- 167,173 ---- correction = q_correction / dble(natom-nquant_nlink) !Should never divide by zero here as code !returns above if nquant==natom. - i.e. pure QM run. ! final_q_sum = qmcharge * AMBER_ELECTROSTATIC do i = 1, natom !Go through each atom adding correction to it's charge if it !is not a QM or MM Link atom. ------------------------------------------------------------------------------ Temporary workarounds: Just ignore the message and assume the code is doing things correctly. ********>Bugfix 19 Author: Dave Case Date: 09/30/2006 Programs: LEaP Description: The code for reading PDB files requires there to be a space after the letters "TER" in order for such cards to be recoginized as separator cards. This patch removes that restriction, although it is arguably a part of the PDB specification. This patch also adds a space in writing pdb files, to at least give some amount of backwards compatibility. (Users having problems with other programs can also try to recompile leap with "-DELABORATE_PDB_TER".) Fix: apply the following patch to src/leap/src/leap/pdb_read.c and to /src/leap/src/leap/pdb_write.c ------------------------------------------------------------------------------ *** src/leap/src/leap/pdb_read.c 3 Apr 2006 23:35:29 -0000 9.0 --- src/leap/src/leap/pdb_read.c 30 Sep 2006 15:37:53 -0000 *************** *** 199,205 **** r.record_type = PDB_TURN; else if (STREQN(buffer + 1, "vec", 3)) r.record_type = PDB_TVECT; ! else if (STREQN(buffer + 1, "er ", 3)) r.record_type = PDB_TER; break; --- 199,205 ---- r.record_type = PDB_TURN; else if (STREQN(buffer + 1, "vec", 3)) r.record_type = PDB_TVECT; ! else if (STREQN(buffer + 1, "er", 2)) r.record_type = PDB_TER; break; *** src/leap/src/leap/pdb_write.c 3 Apr 2006 23:35:29 -0000 9.0 --- src/leap/src/leap/pdb_write.c 30 Sep 2006 15:59:06 -0000 *************** *** 326,332 **** r->pdb.ter.residue.seq_num, r->pdb.ter.residue.insert_code); #else ! fmt = "TER"; pdb_sprintf(buffer, fmt ); #endif break; --- 326,332 ---- r->pdb.ter.residue.seq_num, r->pdb.ter.residue.insert_code); #else ! fmt = "TER "; pdb_sprintf(buffer, fmt ); #endif break; ------------------------------------------------------------------------------ Temporary workarounds: Add a space in your input PDB files ********>Bugfix 20 Author: Dave Case, based on a report and patch from Camron Abrams Date: 10/01/2006 Programs: ptraj Description: The code that reads in the eigenvectors won't work when there are more than 9999 elements. Fix: apply the following patch to src/ptraj/evec.c ------------------------------------------------------------------------------ *** src/ptraj/evec.c 3 Apr 2006 23:35:48 -0000 9.0 --- src/ptraj/evec.c 1 Oct 2006 18:59:17 -0000 *************** *** 112,126 **** "WARNING in ptraj(), readEvecFile: sscanf on coords failed\n"); return 1; } ! tmpbuf = buffer + 5; ! if (sscanf(tmpbuf, "%i", &(modinfo->nvectelem)) != 1) { ! /* ! * For compatibility with quasih and nmode output ! */ ! fprintf(stderr, ! "FYI: No value for nvectelem found in %s, assuming it is navgelem\n", modinfo->name); ! modinfo->nvectelem = modinfo->navgelem; ! } /* * Allocate memory for avg, freq, evec --- 112,128 ---- "WARNING in ptraj(), readEvecFile: sscanf on coords failed\n"); return 1; } ! switch (sscanf(buffer,"%i %i", &(modinfo->navgelem), &(modinfo->nvectelem))) { ! case 0: ! fprintf(stderr, ! "WARNING in ptraj(), readEvecFile: sscanf on coords failed\n"); ! return 1; ! case 1: /* assume the first was read in */ ! fprintf(stderr, ! "FYI: No value for nvectelem found in %s, assuming it is navgelem\n", modinfo->name); ! modinfo->nvectelem = modinfo->navgelem; ! break; ! } /* * Allocate memory for avg, freq, evec ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 21 Author: Ross Walker Date: 10/20/2006 Programs: sander (idc>0) and divcon Description: This is a workaround for a bug identified in the Intel 9.1 fortran compiler. The Intel compiler generates incorrect machine code (that leads to segfaults at runtime) for loops of the form: do i=1,imax array(i) = 0.0D0 if(do_extra) array2(i) = 0.0d0 enddo Fix: This patch fixes multiple files so copy it to $AMBERHOME and then apply it with patch -p0 Bugfix 22 Author: Dave Case (fix contributed by Ingvar Lagerstedt) Date: 10/20/2006 Programs: sander Description: Statistics for the born radii (reported with rbornstat set) will be incorrect if nrespai != nrespa. This is because the radii statistics arrays are updated every nrespai steps. Fix: Apply the following patch to $AMBERHOME/src/sander/runmd.f ------------------------------------------------------------------------------ *** src/sander/runmd.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/sander/runmd.f 20 Oct 2006 17:02:28 -0000 *************** *** 154,160 **** equivalence (pres(1),ener(11)),(ekcmt(1),ener(15)) equivalence (vir(1),ener(19)) ! integer nvalid _REAL_ eke,eket _REAL_ extent --- 154,160 ---- equivalence (pres(1),ener(11)),(ekcmt(1),ener(15)) equivalence (vir(1),ener(19)) ! integer nvalid, nvalidi _REAL_ eke,eket _REAL_ extent *************** *** 457,462 **** --- 457,463 ---- nrep = 15 nvalid = 0 + nvalidi = 0 nstep = 0 fit = 0.d0 fiti = 0.d0 *************** *** 1965,1970 **** --- 1966,1974 ---- enert2(1:nren) = enert2(1:nren) + ener(1:nren)**2 if( nvalid == 1 ) etot_start = ener(1) end if + + ! added for rbornstat + if (mod(irespa,nrespai) == 0 .or. irespa < 2) nvalidi = nvalidi + 1 ntnb = 0 if (mod(nstep,nsnb) == 0) ntnb = 1 *************** *** 2349,2354 **** --- 2353,2362 ---- ! print Born radii statistics if ((rbornstat == 1).and.(igb /= 0)) then + + ! Born radii stats collected every nrespai step not nrespa step + tspan = nvalidi + write(6,580) nstep write(6,590) do m = 1,natom ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 23 Author: Ross Walker Date: 10/27/2006 Programs: (benchmarks) Description: Some benchmarks that were meant only for development purposes were acidentally left in the benchmark makefile of the release version. This will lead to file not found errors when the benchmarks are run. Fix: Apply the following patch to $AMBERHOME/benchmarks/Makefile ------------------------------------------------------------------------------ *** benchmarks/Makefile 2006-10-27 10:53:18.000000000 -0700 --- benchmarks/Makefile 2006-10-27 10:53:48.000000000 -0700 *************** *** 13,23 **** cd gb_cox2; ./bench.cox2 cd gb_alp; ./bench.gb_alp cd trx; ./bench.trx - cd mg_qmmm; ./bench.mg_qmmm - cd mg_qmmm; ./bench.mg_classical - cd ladh; ./bench.ladh_qmmm - cd ladh; ./bench.ladh_classical - cd 1NLN_qmmm; ./bench.1NLN_MD_ntb1 @echo "" @echo "Benchmarking of ${AMBER} is complete at `date`." @echo "" --- 13,18 ---- ------------------------------------------------------------------------------ Temporary workarounds: Just ignore the file not found errors. They are the last benchmarks to be run anyway. ********>Bugfix 24 Author: Ray Luo (problem reported by Jarrod Smith) Date: 11/08/2006 Programs: ff03ua files Description: A parameter needed for HID residues is missing from the united atom force field files. Fix: Apply the following patch to $AMBERHOME/dat/leap/parm/frcmod.ff03ua ------------------------------------------------------------------------------ --- dat/leap/parm/frcmod.ff03ua.orig 2006-08-10 19:50:26.000000000 -0700 +++ dat/leap/parm/frcmod.ff03ua 2006-09-06 17:24:14.000000000 -0700 @@ -66,6 +66,7 @@ C2-CC-NA 70.0 120.00 AA his C2-CC-CW 70.0 120.00 AA his C2-CC-NB 70.0 120.00 AA his +C2-CC-CV 70.0 120.00 AA his C3-C1-OH 50.0 109.50 C1-OH-HO 55.0 108.50 CT-C1-OH 50.0 109.50 ------------------------------------------------------------------------------ Temporary workarounds: none. ********>Bugfix 25 Author: Scott Brozell, reported by Steven Winfield Date: 12/11/2006 Programs: LEaP Description: The setbox command ignores its third argument. Fix: apply the following patch to amber9/src/leap/src/leap/commands.c ------------------------------------------------------------------------------ *** src/leap/src/leap/commands.c 2006/04/03 23:35:27 9.0 --- src/leap/src/leap/commands.c 2006/12/12 04:43:42 *************** *** 2808,2826 **** * get any box offset */ if ( iArgCount == 3 ) { ! if ( iObjectType( oAssocObject(aaArgs[1]) ) == LISTid ) { LISTLOOP llNumbers; /* * x,y,z box clearances */ ! if ( iListSize(oAssocObject(aaArgs[1])) != 3 ) { VP0(( "%s: Argument #2 must have three values: { x y z } or one.\n", sCmd )); VP0(( sUsage )); return(NULL); } ! llNumbers = llListLoop((LIST)oAssocObject(aaArgs[1])); for ( i=0; i<3; i++ ) { ASSOC aAss = (ASSOC)oListNext(&llNumbers); if ( iObjectType(oAssocObject(aAss)) != ODOUBLEid ) { --- 2808,2826 ---- * get any box offset */ if ( iArgCount == 3 ) { ! if ( iObjectType( oAssocObject(aaArgs[2]) ) == LISTid ) { LISTLOOP llNumbers; /* * x,y,z box clearances */ ! if ( iListSize(oAssocObject(aaArgs[2])) != 3 ) { VP0(( "%s: Argument #2 must have three values: { x y z } or one.\n", sCmd )); VP0(( sUsage )); return(NULL); } ! llNumbers = llListLoop((LIST)oAssocObject(aaArgs[2])); for ( i=0; i<3; i++ ) { ASSOC aAss = (ASSOC)oListNext(&llNumbers); if ( iObjectType(oAssocObject(aAss)) != ODOUBLEid ) { *************** *** 2836,2842 **** } } } else { ! daBuffer[0] = 2.0 * dODouble(oAssocObject(aaArgs[1])); if ( daBuffer[0] < 0.0 ) { VP0(( "%s: Bad box clearance.\n", sCmd )); VP0(( sUsage )); --- 2836,2842 ---- } } } else { ! daBuffer[0] = 2.0 * dODouble(oAssocObject(aaArgs[2])); if ( daBuffer[0] < 0.0 ) { VP0(( "%s: Bad box clearance.\n", sCmd )); VP0(( sUsage )); ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 26 Author: Ross Walker Date: 12/13/2006 Programs: Sander Description: When running QMMM calculations with an incorrect spin state sander can quit with a cryptic error message instead of the intended error message. Fix: apply the following patch to src/sander/qm2_load_params.f ------------------------------------------------------------------------------ *** src/sander/qm2_load_params_and_allocate.f 2006-12-13 15:35:31.000000000 -0800 --- src/sander/qm2_load_params_and_allocate.f 2006-12-13 16:56:58.000000000 -0800 *************** *** 138,145 **** !Protect DUMB users from STUPID errors if (nelectrons > 2*qm2_struct%norbs) then if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: ERROR-number of electrons: ,i5, is more'')') nelectrons ! write(6,'(''QMMM: than 2xnorbs of: ,i5'')') qm2_struct%norbs write(6,'(''QMMM: Check qmcharge in qmmm namelist and rerun'')') write(6,'(''QMMM: the calculation.'')') end if --- 138,145 ---- !Protect DUMB users from STUPID errors if (nelectrons > 2*qm2_struct%norbs) then if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: ERROR-number of electrons: '',i5,'' is more'')') nelectrons ! write(6,'(''QMMM: than 2xnorbs of: '',i5)') qm2_struct%norbs write(6,'(''QMMM: Check qmcharge in qmmm namelist and rerun'')') write(6,'(''QMMM: the calculation.'')') end if *************** *** 150,156 **** ! Make sure we have an even number of electrons if((nelectrons/2)*2 /= nelectrons) THEN if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: System specified with odd number of electrons ''('',i5,''))') nelectrons write(6,'(''QMMM: but odd spin ('',i3,''). Correct error and re-run calculation.'')') qmmm_nml%spin end if stop --- 150,156 ---- ! Make sure we have an even number of electrons if((nelectrons/2)*2 /= nelectrons) THEN if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: System specified with odd number of electrons ('',i5,'')'')') nelectrons write(6,'(''QMMM: but odd spin ('',i3,''). Correct error and re-run calculation.'')') qmmm_nml%spin end if stop *************** *** 159,166 **** ! Make sure we have an odd number of electrons.` if((nelectrons/2)*2 == nelectrons) then if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: System specified with odd number of electrons ('',i5,'')'')') nelectrons ! write(6,'(''QMMM: but odd spin ('',i3,''). Correct error and re-run calculation.'')') qmmm_nml%spin end if stop end if --- 159,166 ---- ! Make sure we have an odd number of electrons.` if((nelectrons/2)*2 == nelectrons) then if (qmmm_mpi%master.and.qmmm_struct%qm_mm_first_call) then ! write(6,'(''QMMM: System specified with an even number of electrons ('',i5,'')'')') nelectrons ! write(6,'(''QMMM: but even spin ('',i3,''). Correct error and re-run calculation.'')') qmmm_nml%spin end if stop end if ------------------------------------------------------------------------------ Temporary workarounds: None ********>Bugfix 27 Author: Ross Walker (posted by dac) Date: 1/1/2007 Programs: Sander Description: Complex masks for QM/MM can overflow the internal arrays in findmask(); also increase the mask string to 256 characters Fix: apply the following patch to src/sander/findmask.f ------------------------------------------------------------------------------ *** src/sander/findmask.f 3 Apr 2006 23:35:55 -0000 9.0 --- src/sander/findmask.f 25 Jul 2006 16:43:37 -0000 9.2 *************** *** 89,95 **** ! one (C,N,O) or, less frequently, two character (Na,Cl,Mg,etc.) names ! effectively represent atomic elements when followed by '=' ! - some static buffers during processing of 'maskstr' are set up ! ! and this limits the length of selection string to 80 chars ! ! VH; Dec 30, 2003 ! --- 89,95 ---- ! one (C,N,O) or, less frequently, two character (Na,Cl,Mg,etc.) names ! effectively represent atomic elements when followed by '=' ! - some static buffers during processing of 'maskstr' are set up ! ! and this limits the length of selection string to 256 chars ! ! VH; Dec 30, 2003 ! *************** *** 132,138 **** _REAL_ crd(*) integer i ! character(80) infix, postfix logical error ! check for null input: --- 132,138 ---- _REAL_ crd(*) integer i ! character(256) infix, postfix logical error ! check for null input: *************** *** 176,182 **** ! expressions, such as [@CA], [:LYS,ARG], [:1-10@CB] implicit none ! integer, parameter :: BUFLEN=80 character(*) input, infix character(BUFLEN) buffer character(1) symbol --- 176,182 ---- ! expressions, such as [@CA], [:LYS,ARG], [:1-10@CB] implicit none ! integer, parameter :: BUFLEN=256 character(*) input, infix character(BUFLEN) buffer character(1) symbol *************** *** 258,266 **** character(*) infix, postfix character(1) symbol, topop ! ! maxstack=40 should be big enough for even very complex expressions ! ! this only takes 40 chars, so memory is no issue here ! integer, parameter :: maxstack=40 character(1) stack(maxstack) integer top, i, p, inplen logical error, done --- 258,266 ---- character(*) infix, postfix character(1) symbol, topop ! ! maxstack=256 should be big enough for even very complex expressions ! ! this only takes 256 chars, so memory is no issue here ! integer, parameter :: maxstack=256 character(1) stack(maxstack) integer top, i, p, inplen logical error, done *************** *** 397,407 **** character(len=4) igraph(*), isymbl(*), lbres(*) _REAL_ crd(*) character(*) postfix ! integer, parameter :: maxstack=20 integer i, j, p, inplen, top, astat, nselatom integer prnlev ! character(80) buffer, diststr character(1) symbol integer, dimension(:,:), allocatable :: stack integer, dimension(:), allocatable :: mask1, mask2 --- 397,407 ---- character(len=4) igraph(*), isymbl(*), lbres(*) _REAL_ crd(*) character(*) postfix ! integer, parameter :: maxstack=256 integer i, j, p, inplen, top, astat, nselatom integer prnlev ! character(256) buffer, diststr character(1) symbol integer, dimension(:,:), allocatable :: stack integer, dimension(:), allocatable :: mask1, mask2 *************** *** 795,801 **** character(*) numlist integer nres, ipres(*), mask(*) ! character(80) buffer character(1) symbol integer p, i, inplen, res1, res2, ios logical dash --- 795,801 ---- character(*) numlist integer nres, ipres(*), mask(*) ! character(256) buffer character(1) symbol integer p, i, inplen, res1, res2, ios logical dash *************** *** 901,907 **** character(*) numlist integer natom, mask(*) ! character(80) buffer character(1) symbol integer p, i, inplen, at1, at2, ios logical dash --- 901,907 ---- character(*) numlist integer natom, mask(*) ! character(256) buffer character(1) symbol integer p, i, inplen, at1, at2, ios logical dash ------------------------------------------------------------------------------ Temporary workarounds: None ********>Bugfix 28 Author: Dave Case Date: 1/3/2007 Programs: Sander Description: The random.F90 file in dcqtp contains stub routines that are not used, but may fail to compile because of type mismatches. Fix: apply the following patch to src/dcqtp/src/util/random.F90 ------------------------------------------------------------------------------ *** src/dcqtp/src/util/random.F90 3 Apr 2006 23:34:28 -0000 9.0 --- src/dcqtp/src/util/random.F90 3 Jan 2007 18:19:37 -0000 *************** *** 6,12 **** ! C----------------------------------------------------------CCC ! FUNCTION xrandom(idum) ! returns a random between 0.0 and 1.0 ! can be replaced by an intrinsic function, should be fixed --- 6,12 ---- ! C----------------------------------------------------------CCC ! double precision FUNCTION xrandom(idum) ! returns a random between 0.0 and 1.0 ! can be replaced by an intrinsic function, should be fixed ------------------------------------------------------------------------------ Temporary workarounds: None ********>Bugfix 29 Author: Ross Walker Date: 1/24/2007 Programs: XLeap Description: Some modern compilers have trouble compiling ScrolledTable.c which is required to compile xleap. The error is typically ScrolledTable.c:1167: error: conflicting types for XawScrolledTableSetLocation This should address this issue on all machines. Fix: apply the following patch to src/leap/src/Xraw ------------------------------------------------------------------------------ *** src/leap/src/Xraw/ScrolledTable.c 2007-01-27 23:12:22.000000000 -0800 --- src/leap/src/Xraw/ScrolledTable.c 2007-01-27 23:12:39.000000000 -0800 *************** *** 1151,1169 **** XtMoveWidget(child, x, y); } ! void ! #if NeedFunctionPrototypes ! XawScrolledTableSetLocation (Widget gw, ! #if NeedWidePrototypes ! double xoff, double yoff) ! #else ! float xoff, float yoff) ! #endif ! #else ! XawScrolledTableSetLocation (gw, xoff, yoff) ! Widget gw; ! float xoff,yoff; ! #endif { XrawScrolledTableWidget stw = (XrawScrolledTableWidget) gw; register Widget child; --- 1151,1157 ---- XtMoveWidget(child, x, y); } ! void XawScrolledTableSetLocation(Widget gw, double xoff, double yoff ) { XrawScrolledTableWidget stw = (XrawScrolledTableWidget) gw; register Widget child; ------------------------------------------------------------------------------ Temporary workarounds: Xleap is the last program to be built so you can use tleap and the remainder of the Amber package. ********>Bugfix 30 Author: Ross Walker Date: 1/27/2007 Programs: Sander Description: Numerous minor bug fixes that may cause problems such as segfaults or file open errors on some systems depending on the compiler being used. Specific Fixes include: 1) Workaround for some dodgy Intel compiler that can cause a QMMM MPI hang at printing kvector distribution in mdout file. 2) Fix QMMM PIMD MPI_Gather error in parallel. 3) Fix bad format statement in bad iqmatoms error message. 4) REMD simulations may report error on opening mdout. 5) Gas phase simulations may segfault in parallel. 6) REMD simulations may have problems reading the command line. Fix: apply the following patch to src/sander/qmmm_module.f src/sander/qm_ewald.f src/sander/mdfil.f src/sander/nonbond_list.f src/sander/sander.f src/sander/mexit.f ------------------------------------------------------------------------------ *** src/sander/qm_ewald.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/qm_ewald.f 2007-01-27 23:28:30.000000000 -0800 *************** *** 58,69 **** !Local integer :: kx,ky,kz,ksy,ksz,ksq ! integer :: mpi_division, mpi_totkq_count integer :: ier #ifdef MPI - #include "parallel.h" #include "mpif.h" ! integer :: i, istatus, istartend(2) #endif !Calculate the total number of kspace vectors --- 58,71 ---- !Local integer :: kx,ky,kz,ksy,ksz,ksq ! integer :: mpi_division integer :: ier #ifdef MPI #include "mpif.h" ! integer :: i, istartend(2) ! !PART OF WORKAROUND FOR BUGGY INTEL COMPILER ! integer, allocatable, dimension(:) :: gather_array ! #endif !Calculate the total number of kspace vectors *************** *** 89,137 **** end do !Now we need to allocate enough memory for the kvectors and the kvector exponential tables. ! if (totkq > 0) then ! mpi_division = (totkq + (qmmm_mpi%numthreads-1))/qmmm_mpi%numthreads ! qmmm_mpi%kvec_end = min(mpi_division*(qmmm_mpi%mytaskid+1),totkq) ! qmmm_mpi%kvec_start = min(mpi_division*qmmm_mpi%mytaskid+1,totkq+1) ! qmmm_mpi%totkq_count = qmmm_mpi%kvec_end-qmmm_mpi%kvec_start+1 #ifdef MPI ! if (qmmm_mpi%master) then ! write (6,'(/a)') '|QMMM: KVector division among threads:' ! write (6,'(a)') '|QMMM: Start End Count' ! !Already know my own. ! write(6,'(a,i8,a,i8,a,i8,a)') & ! '|QMMM: Thread( 0): ',qmmm_mpi%kvec_start,'->',qmmm_mpi%kvec_end, & ! ' (',qmmm_mpi%kvec_end-qmmm_mpi%kvec_start+1,')' ! do i = 1, sandersize-1 ! call mpi_recv(istartend,2,mpi_integer,i,0,commsander,istatus,ier) ! write(6,'(a,i4,a,i8,a,i8,a,i8,a)') & ! '|QMMM: Thread(',i,'): ',istartend(1),'->',istartend(2), & ! ' (',istartend(2)-istartend(1)+1,')' ! end do ! else ! !Send a message to the master with our counts in. ! istartend(1) = qmmm_mpi%kvec_start ! istartend(2) = qmmm_mpi%kvec_end ! call mpi_send(istartend,2,mpi_integer,0,0,commsander,ier) ! end if ! #endif ! !Ultimately we only need to allocate these as the number of kvectors this cpu does. ! allocate ( qmewald%kvec(qmmm_mpi%totkq_count),stat=ier ) ! REQUIRE(ier == 0) ! allocate ( qmewald%dkvec(3,qmmm_mpi%totkq_count),stat=ier ) REQUIRE(ier == 0) ! allocate ( qmewald%dmkv(3,qmmm_mpi%totkq_count),stat=ier ) REQUIRE(ier == 0) ! if (.not. qmmm_nml%qm_pme) then ! allocate ( qmewald%ktable(6,natom,qmmm_mpi%totkq_count), stat=ier ) ! REQUIRE(ier == 0) ! end if ! allocate ( qmewald%qmktable(6,nquant+nlink,qmmm_mpi%totkq_count), stat=ier ) REQUIRE(ier == 0) - else - call sander_bomb('qm_ewald_setup','INVALID NUMBER OF K VECTORS','Need totkq > 0') end if return --- 91,166 ---- end do !Now we need to allocate enough memory for the kvectors and the kvector exponential tables. ! if (totkq == 0) then ! call sander_bomb('qm_ewald_setup','INVALID NUMBER OF K VECTORS','Need totkq > 0') ! end if ! ! mpi_division = (totkq + (qmmm_mpi%numthreads-1))/qmmm_mpi%numthreads ! qmmm_mpi%kvec_end = min(mpi_division*(qmmm_mpi%mytaskid+1),totkq) ! qmmm_mpi%kvec_start = min(mpi_division*qmmm_mpi%mytaskid+1,totkq+1) ! qmmm_mpi%totkq_count = qmmm_mpi%kvec_end-qmmm_mpi%kvec_start+1 ! #ifdef MPI ! if (qmmm_mpi%master) then ! write (6,'(/a)') '|QMMM: KVector division among threads:' ! write (6,'(a)') '|QMMM: Start End Count' ! ! !The FOLLOWING CODE SHOULD WORK FINE BUT THE INTEL COMPILER SEEMS TO MISCOMPILE ! !THE i=1,iminus loop DUE TO A COMPILER BUG. SO I HAVE WRITTEN A WORK AROUND BELOW. ! ! !Already know my own. ! ! write(6,'(a,i8,a,i8,a,i8,a)') & ! ! '|QMMM: Thread( 0): ',qmmm_mpi%kvec_start,'->',qmmm_mpi%kvec_end, & ! ! ' (',qmmm_mpi%kvec_end-qmmm_mpi%kvec_start+1,')' ! ! iminus = qmmm_mpi%numthreads-1 ! ! do i = 1, iminus ! ! call mpi_recv(istartend,2,mpi_integer,i,i,qmmm_mpi%commqmmm,istatus,ier) ! ! write(6,'(a,i4,a,i8,a,i8,a,i8,a)') & ! ! '|QMMM: Thread(',i,'): ',istartend(1),'->',istartend(2), & ! ! ' (',istartend(2)-istartend(1)+1,')' ! ! end do ! ! else ! ! !Send a message to the master with our counts in. ! ! istartend(1) = qmmm_mpi%kvec_start ! ! istartend(2) = qmmm_mpi%kvec_end ! ! call mpi_ssend(istartend,2,mpi_integer,0,qmmm_mpi%mytaskid,qmmm_mpi%commqmmm,ier) ! ! end if ! !WORKAROUND FOR BUGGY INTEL COMPILER ! end if ! if (qmmm_mpi%commqmmm_master) then ! allocate( gather_array(2*qmmm_mpi%numthreads), stat=ier) REQUIRE(ier == 0) ! end if ! istartend(1) = qmmm_mpi%kvec_start ! istartend(2) = qmmm_mpi%kvec_end ! call mpi_gather(istartend, 2, MPI_INTEGER, gather_array, 2, MPI_INTEGER, 0, qmmm_mpi%commqmmm, ier) ! if (qmmm_mpi%master) then ! do i = 1, qmmm_mpi%numthreads ! write(6,'(a,i4,a,i8,a,i8,a,i8,a)') & ! '|QMMM: Thread(',i-1,'): ',gather_array(2*i-1),'->',gather_array(2*i), & ! ' (',gather_array(2*i)-gather_array(2*i-1)+1,')' ! end do ! end if ! if (qmmm_mpi%commqmmm_master) then ! deallocate( gather_array, stat=ier) REQUIRE(ier == 0) ! end if ! ! #endif ! !We only allocate these as the number of kvectors this cpu does since totkq_count is ! !qmmm_mpi%kvec_end-qmmm_mpi%kvec_start+1 ! allocate ( qmewald%kvec(qmmm_mpi%totkq_count),stat=ier ) ! REQUIRE(ier == 0) ! allocate ( qmewald%dkvec(3,qmmm_mpi%totkq_count),stat=ier ) ! REQUIRE(ier == 0) ! allocate ( qmewald%dmkv(3,qmmm_mpi%totkq_count),stat=ier ) ! REQUIRE(ier == 0) ! if (.not. qmmm_nml%qm_pme) then ! allocate ( qmewald%ktable(6,natom,qmmm_mpi%totkq_count), stat=ier ) REQUIRE(ier == 0) end if + allocate ( qmewald%qmktable(6,nquant+nlink,qmmm_mpi%totkq_count), stat=ier ) + REQUIRE(ier == 0) return *** src/sander/qmmm_module.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/qmmm_module.f 2007-01-27 23:28:33.000000000 -0800 *************** *** 1794,1800 **** ! Sanity check 1, ensure nquant isn't bigger than natom (it can't be) if ((nquant < 1) .OR. (nquant > natom)) then write (6,'(" QM ATOM VALIDATION: nquant has a value of ",i8)') nquant ! write (6,'(" which is bigger than natom of ",i8,". Need 0 < nquant <= natom.")i') natom call sander_bomb('validate_qm_atoms','nquant illegal', 'Need 0 < nquant <= natom') end if --- 1794,1800 ---- ! Sanity check 1, ensure nquant isn't bigger than natom (it can't be) if ((nquant < 1) .OR. (nquant > natom)) then write (6,'(" QM ATOM VALIDATION: nquant has a value of ",i8)') nquant ! write (6,'(" which is bigger than natom of ",i8,". Need 0 < nquant <= natom.")') natom call sander_bomb('validate_qm_atoms','nquant illegal', 'Need 0 < nquant <= natom') end if *** src/sander/mdfil.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/mdfil.f 2007-01-27 23:28:16.000000000 -0800 *************** *** 290,305 **** if (numgroup > 1 .and. groups(1:1) /= ' ') then ia = 0 ! istart = 0 iend = len(groupbuffer) ! do while (istart < iend) if ( groupbuffer(istart:istart) == ' ' ) then istart = istart + 1 else is = istart ie = istart ! do while ( ie < iend .and. & groupbuffer(ie:ie) /= ' ' ) ie = ie + 1 end do --- 290,305 ---- if (numgroup > 1 .and. groups(1:1) /= ' ') then ia = 0 ! istart = 1 iend = len(groupbuffer) ! do while (istart <= iend) if ( groupbuffer(istart:istart) == ' ' ) then istart = istart + 1 else is = istart ie = istart ! do while ( ie <= iend .and. & groupbuffer(ie:ie) /= ' ' ) ie = ie + 1 end do *************** *** 341,347 **** istart = 1 iend = len(groupbuffer) ! do while (istart < iend) if ( groupbuffer(istart:istart) == ' ' ) then istart = istart + 1 --- 341,347 ---- istart = 1 iend = len(groupbuffer) ! do while (istart <= iend) if ( groupbuffer(istart:istart) == ' ' ) then istart = istart + 1 *************** *** 349,355 **** is = istart ie = istart ! do while ( ie < iend .and. & groupbuffer(ie:ie) /= ' ' ) ie = ie + 1 end do --- 349,355 ---- is = istart ie = istart ! do while ( ie <= iend .and. & groupbuffer(ie:ie) /= ' ' ) ie = ie + 1 end do *** src/sander/mexit.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/mexit.f 2007-01-27 23:28:21.000000000 -0800 *************** *** 28,34 **** end if #endif ! if (output_unit > 0) then close(unit=output_unit) end if --- 28,34 ---- end if #endif ! if (output_unit > 0 .and. status /= 0) then close(unit=output_unit) end if *** src/sander/nonbond_list.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/nonbond_list.f 2007-01-27 23:28:25.000000000 -0800 *************** *** 2091,2103 **** ! ---- in the right order if(periodic == 0)then do i=1,natom ! j = bckptr(i) ! imagcrds(1,i) = crd(1,j) ! imagcrds(2,i) = crd(2,j) ! imagcrds(3,i) = crd(3,j) ! imagcrds(1,i) = crd(1,j)+xbox0 ! imagcrds(2,i) = crd(2,j)+ybox0 ! imagcrds(3,i) = crd(3,j)+zbox0 end do return end if --- 2091,2102 ---- ! ---- in the right order if(periodic == 0)then do i=1,natom ! if (mygrdlist(i) == 1) then ! j = bckptr(i) ! imagcrds(1,i) = crd(1,j)+xbox0 ! imagcrds(2,i) = crd(2,j)+ybox0 ! imagcrds(3,i) = crd(3,j)+zbox0 ! end if end do return end if *** src/sander/sander.f 2006-04-03 16:35:55.000000000 -0700 --- src/sander/sander.f 2007-01-27 23:28:39.000000000 -0800 *************** *** 1004,1009 **** --- 1004,1011 ---- if( ntb>0 .and. ifbox==1 .and. ew_type==0 .and. mpoltype==0 ) & call deallocate_m1m2m3() call AMOEBA_deallocate + + if (master) close(6) return ------------------------------------------------------------------------------ Temporary workarounds: None ********>Bugfix 31: Author: H. Gohlke, A. Koller Date: 02/05/07 Programs: ptraj Description: Eigenvectors for iRED analysis are output in the wrong order. Fix: apply the following patch to amber9/src/ptraj/actions.c ------------------------------------------------------------------------------ *** src/ptraj/actions.c 2007-01-14 11:13:12.000000000 +0100 --- src/ptraj/actions.c 2007-01-14 12:21:34.000000000 +0100 *************** *** 13619,13625 **** * push the vector info onto the vector stack and store it in action object */ action->carg1 = (void *) vectorInfo; ! pushStack(&vectorStack, (void *) vectorInfo); return 0; } --- 13619,13632 ---- * push the vector info onto the vector stack and store it in action object */ action->carg1 = (void *) vectorInfo; ! if(vectorInfo->mode == VECTOR_IRED){ ! /* Invers vector storage necessary for IRED; ! otherwise IRED matrix will be (N,N)->(1,1) instead of (1,1)->(N,N) */ ! pushBottomStack(&vectorStack, (void *) vectorInfo); ! } ! else{ ! pushStack(&vectorStack, (void *) vectorInfo); ! } return 0; } ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 31: Author: H. Gohlke, A. Koller Date: 02/05/07 Programs: ptraj Description: - transformAnalyzeMatrix only calculates N-1 eigenvectors - Calculation of Cm(t->T) is missing for iRED analysis - Precision of output for iRED analysis is insufficient Fix: apply the following patch to amber9/src/ptraj/analyze.c ------------------------------------------------------------------------------ *** src/ptraj/analyze.c 2007-01-14 11:13:03.000000000 +0100 --- src/ptraj/analyze.c 2007-02-05 16:23:27.000000000 +0100 *************** *** 452,470 **** * Find eigenvalues and eigenvectors */ ! if(nevec > 0){ ! if(nevec >= nelem){ ! nevec = nelem - 1; ! fprintf(stderr, ! "FYI: NEVEC >= NELEM: Number of calculated evecs were reduced to %i\n", ! nevec); } ! if(nevec >= minfo->snap){ ! nevec = minfo->snap - 1; ! fprintf(stderr, ! "FYI: NEVEC >= SNAP: Number of calculated evecs were reduced to %i\n", ! nevec); } neval = nevec; if(2*nevec <= nelem){ --- 452,496 ---- * Find eigenvalues and eigenvectors */ ! if(nevec > nelem){ ! nevec = nelem; ! fprintf(stderr, ! "FYI: NEVEC > NELEM: Number of calculated evecs were reduced to %i\n", ! nevec); ! } ! if(nevec >= minfo->snap){ ! nevec = minfo->snap; ! fprintf(stderr, ! "FYI: NEVEC > SNAP: Number of calculated evecs were reduced to %i\n", ! nevec); ! } ! ! if(nevec == 0 || nelem == nevec){ ! neval = nelem; ! eigval = (double *) safe_malloc(nelem * sizeof(double)); // for the eigenvalues ! workd = (double *) safe_malloc(3 * nelem * sizeof(double)); // for the function dspev to work with ! uplo[0] = 'L'; // lower triangle of matrix is expected as input for dspev ! ! if (nevec == nelem){ // get all eigenvectors ! vout = (double *) safe_malloc(nelem * nelem * sizeof(double)); // for the eigenvectors ! jobz[0] = 'V'; // calculate eigenvalues and eigenvectors ! ldz = nelem; // dimension of "vout" ! } ! else if(nevec == 0){ // get only eigenvalues; only possible if thermo flag is set, otherwise nevec is set to 1 per default ! vout = (double *) safe_malloc(nelem * sizeof(double)); // for the eigenvectors ! jobz[0] = 'N'; // only calculate eigenvalues ! ldz = 1; // dimension of "vout" } ! ! dspev_(jobz, uplo, &nelem, mat, eigval, vout, &ldz, workd, &info); ! if(info != 0){ ! fprintf(stderr," Warning in analyzeMatrix: dspev returned info = %i\n", info); ! return 0; } + + safe_free(workd); + } + else{ // get up to n-1 eigenvectors neval = nevec; if(2*nevec <= nelem){ *************** *** 525,544 **** safe_free(resid); safe_free(select); } - else{ - neval = nelem; - - eigval = (double *) safe_malloc(nelem * sizeof(double)); - vout = (double *) safe_malloc(nelem * sizeof(double)); - workd = (double *) safe_malloc(3 * nelem * sizeof(double)); - - jobz[0] = 'N'; - uplo[0] = 'L'; - ldz = 1; - dspev_(jobz, uplo, &nelem, mat, eigval, vout, &ldz, workd, &info); - - safe_free(workd); - } if(type == MATRIX_MWCOVAR){ /* --- 551,556 ---- *************** *** 2467,2475 **** if(tcr->table != NULL) safe_free(tcr->table); if(tcr->data1 != NULL) safe_free(tcr->data1); if(tcr->data2 != NULL) safe_free(tcr->data2); ! if(tcr->cf != NULL) safe_free(tcr->cf); ! if(tcr->p2cf != NULL) safe_free(tcr->p2cf); ! if(tcr->rcf != NULL) safe_free(tcr->rcf); INITIALIZE_timecorrResults(tcr); safe_free(tcr); } --- 2479,2488 ---- if(tcr->table != NULL) safe_free(tcr->table); if(tcr->data1 != NULL) safe_free(tcr->data1); if(tcr->data2 != NULL) safe_free(tcr->data2); ! if(tcr->cf != NULL) safe_free(tcr->cf); ! if(tcr->cfinf != NULL) safe_free(tcr->cfinf); ! if(tcr->p2cf != NULL) safe_free(tcr->p2cf); ! if(tcr->rcf != NULL) safe_free(tcr->rcf); INITIALIZE_timecorrResults(tcr); safe_free(tcr); } *************** *** 2497,2503 **** double tstep, tcorr; double rave1, r3iave1, r6iave1, rave2, r3iave2, r6iave2; double dnorm; ! double *table, *data1, *data2, *cf, *p2cf, *rcf; double *avgcrd1, *cftmp1, *p2cftmp1, *rcftmp1, *avgcrd2, *cftmp2, *p2cftmp2, *rcftmp2; double *dpt1, *dpt2; --- 2510,2517 ---- double tstep, tcorr; double rave1, r3iave1, r6iave1, rave2, r3iave2, r6iave2; double dnorm; ! double cfinfavgreal, cfinfavgimg; ! double *table, *data1, *data2, *cf, *cfinf, *p2cf, *rcf; double *avgcrd1, *cftmp1, *p2cftmp1, *rcftmp1, *avgcrd2, *cftmp2, *p2cftmp2, *rcftmp2; double *dpt1, *dpt2; *************** *** 2753,2758 **** --- 2767,2776 ---- timecorr->cf = cf = (double *) safe_malloc(sizeof(double) * nvect * nsteps); for(i = 0; i < nvect * nsteps; i++) cf[i] = 0.0; + + timecorr->cfinf = cfinf = (double *) safe_malloc(sizeof(double) * nvect); + for(i = 0; i < nvect; i++) + cfinf[i] = 0.0; } else if(type == ATCT_NORMAL){ timecorr->p2cf = p2cf = (double *) safe_malloc(sizeof(double) * nsteps); *************** *** 2798,2808 **** /* * Loop over all snapshots */ for(k = 0; k < frame; k++){ ind3 = 2 * (nvect * mtot * k + ind2 + i); ! data1[2*k ] = cftmp1[ind3 ]; ! data1[2*k+1] = cftmp1[ind3+1]; } if(drct){ /* --- 2816,2838 ---- /* * Loop over all snapshots */ + cfinfavgreal = 0.0; + cfinfavgimg = 0.0; for(k = 0; k < frame; k++){ ind3 = 2 * (nvect * mtot * k + ind2 + i); ! data1[2*k ] = cftmp1[ind3 ]; ! cfinfavgreal += cftmp1[ind3 ]; ! data1[2*k+1] = cftmp1[ind3+1]; ! cfinfavgimg += cftmp1[ind3+1]; } + cfinfavgreal /= frame; + cfinfavgimg /= frame; + + /* + * Calc plateau value of correlation function (= C(m,t->T) in Bruschweiler paper (A20)) + */ + + cfinf[i] += (cfinfavgreal * cfinfavgreal) + (cfinfavgimg * cfinfavgimg); if(drct){ /* *************** *** 2950,2977 **** if(type == ATCT_IRED){ ! fprintf(fp, "%10s", "Time"); for(i = 1; i <= nvect; i++){ if(i < 10) ! fprintf(fp, " Mode%i", i); else if(i < 100) ! fprintf(fp, " Mode%i", i); else if(i < 1000) ! fprintf(fp, " Mode%i", i); else if(i < 10000) ! fprintf(fp, " Mode%i", i); else if(i < 100000) ! fprintf(fp, " Mode%i", i); } fprintf(fp, "\n"); for(i = 0; i < nsteps; i++){ ! fprintf(fp, "%10.3f", (double) i * tstep); for(j = 0; j < nvect; j++){ if(norm) ! fprintf(fp, "%10.3f", cf[nsteps * j + i] * frame / (cf[nsteps * j] * (frame - i))); else ! fprintf(fp, "%10.3f", factor * cf[nsteps * j + i] / (frame - i)); } fprintf(fp, "\n"); } --- 2980,3019 ---- if(type == ATCT_IRED){ ! /* Print header */ ! fprintf(fp, "%12s", "XXX"); for(i = 1; i <= nvect; i++){ if(i < 10) ! fprintf(fp, " Mode%i", i); else if(i < 100) ! fprintf(fp, " Mode%i", i); else if(i < 1000) ! fprintf(fp, " Mode%i", i); else if(i < 10000) ! fprintf(fp, " Mode%i", i); else if(i < 100000) ! fprintf(fp, " Mode%i", i); ! } ! fprintf(fp, "\n"); ! ! /* Print cfinf */ ! fprintf(fp, "%12s", "C(m,t->T)"); ! for(i = 0; i < nvect; i++){ ! if(norm) ! fprintf(fp, "%12.8f", cfinf[i] / cf[nsteps * i] * frame); ! else ! fprintf(fp, "%12.8f", cfinf[i]); } fprintf(fp, "\n"); + /* Print cf */ for(i = 0; i < nsteps; i++){ ! fprintf(fp, "%12.8f", (double) i * tstep); for(j = 0; j < nvect; j++){ if(norm) ! fprintf(fp, "%12.8f", cf[nsteps * j + i] * frame / (cf[nsteps * j] * (frame - i))); else ! fprintf(fp, "%12.8f", factor * cf[nsteps * j + i] / (frame - i)); } fprintf(fp, "\n"); } ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 31: Author: H. Gohlke, A. Koller Date: 02/05/07 Programs: ptraj Description: - Calculation of Cm(t->T) is missing for iRED analysis Fix: apply the following patch to amber9/src/ptraj/analyze.h ------------------------------------------------------------------------------ *** src/ptraj/analyze.h 2007-01-14 14:14:27.000000000 +0100 --- src/ptraj/analyze.h 2007-01-14 13:43:28.000000000 +0100 *************** *** 272,277 **** --- 272,278 ---- double *data1; double *data2; double *cf; + double *cfinf; double *p2cf; double *rcf; } timecorrResults; *************** *** 290,295 **** --- 291,297 ---- _p_->data1 = NULL; \ _p_->data2 = NULL; \ _p_->cf = NULL; \ + _p_->cfinf = NULL; \ _p_->p2cf = NULL; \ _p_->rcf = NULL; ------------------------------------------------------------------------------ Temporary workarounds: none ********>Bugfix 32: Author: Alejandro Nadra, Marcelo Marti and Adrian Roitberg Date: 02/13/2007 Programs: sander Description: Fix an error when rk2a parameter is not set for Jarzynsky runs. Fix: This patch acctually affects multiple files. So, run it from the $AMBERHOME directory, with: $ patch -p0 -N -r patch_rejects < bugfix.32 ------------------------------------------------------------------------------ *** src/sander/nmr.f 2007-02-12 18:05:37.000000000 -0500 --- src/sander/nmr.f 2007-02-12 18:10:20.000000000 -0500 *************** *** 3981,3987 **** write(6,'(/2x,a)') 'rk2 and rk3 must be equal, or only one of them should be defined' endif endif ! if(rk2a.ne.rk3a) then if(rk2a.eq.0.) then rk2a=rk3a --- 3981,3997 ---- write(6,'(/2x,a)') 'rk2 and rk3 must be equal, or only one of them should be defined' endif endif ! ! if(rk2a.ne.rk2) then ! if(rk2a.eq.0.) then ! rk2a=rk2 ! elseif(rk2.eq.0.) then ! rk2=rk2a ! else ! write(6,'(/2x,a)') 'rk2 and rk2a must be equal, or only one of them should be defined' ! endif ! endif ! if(rk2a.ne.rk3a) then if(rk2a.eq.0.) then rk2a=rk3a *************** *** 3992,3997 **** --- 4002,4011 ---- endif endif + if(rk2.eq.0.) then + write(6,'(/2x,a)') 'rk2 should not be 0' + endif + r1=r2-100 r4=r3+100 r1a=r1 *** test/jar/dist_vs_t.save 2007-02-13 17:51:32.000000000 -0500 --- test/jar/dist_vs_t.save 2007-02-13 17:51:39.000000000 -0500 *************** *** 1,1000 **** 15.00000 15.12396 -1239.55482 0.00000 ! 15.00500 14.75768 2470.68119 3.07782 ! 15.01000 15.13490 -1246.46571 6.13835 ! 15.01500 15.15041 -1350.03026 -0.35289 ! 15.02000 14.77085 2481.56731 2.47596 ! 15.02500 15.12423 -987.34073 6.21152 ! 15.03000 15.18296 -1520.41603 -0.05787 ! 15.03500 14.79016 2431.22399 2.21915 ! 15.04000 15.10949 -689.36203 6.57381 ! 15.04500 15.22195 -1753.56266 0.46649 ! 15.05000 14.81786 2298.16761 1.82801 ! 15.05500 15.09158 -361.73991 6.66908 ! 15.06000 15.25846 -1960.73753 0.86288 ! 15.06500 14.85072 2114.95339 1.24842 ! 15.07000 15.06587 40.70437 6.63757 ! 15.07500 15.29385 -2155.70871 1.35006 ! 15.08000 14.88381 1930.50868 0.78706 ! 15.08500 15.04306 412.23949 6.64393 ! 15.09000 15.31601 -2219.41349 2.12599 ! 15.09500 14.92575 1660.38648 0.72842 ! 15.10000 15.02807 704.89167 6.64162 ! 15.10500 15.33758 -2276.94736 2.71148 ! 15.11000 14.97830 1288.05395 0.23925 ! 15.11500 15.00608 1064.14681 6.11975 ! 15.12000 15.35021 -2246.82508 3.16305 ! 15.12500 15.03175 909.19026 -0.18103 ! 15.13000 14.98599 1402.69202 5.59867 ! 15.13500 15.35377 -2128.59978 3.78390 ! 15.14000 15.08176 566.11956 -0.12230 ! 15.14500 14.97391 1661.32801 5.44632 ! 15.15000 15.34261 -1868.32165 4.92884 ! 15.15500 15.14285 117.74838 0.55240 ! 15.16000 14.96654 1872.64901 5.52840 ! 15.16500 15.32568 -1553.78301 6.32556 ! 15.17000 15.21632 -447.42888 1.32253 ! 15.17500 14.97080 1970.52988 5.13028 ! 15.18000 15.30366 -1192.08920 7.07639 ! 15.18500 15.28287 -942.45174 1.74003 ! 15.19000 14.98704 1952.45317 4.26504 ! 15.19500 15.26318 -655.18980 7.50820 ! 15.20000 15.33924 -1336.69421 2.52849 ! 15.20500 15.01449 1826.98171 3.75420 ! 15.21000 15.22147 -109.91778 8.04686 ! 15.21500 15.38463 -1623.38359 3.71361 ! 15.22000 15.05436 1583.47705 3.61384 ! 15.22500 15.18610 371.49187 8.50127 ! 15.23000 15.41923 -1805.25106 4.91687 ! 15.23500 15.10935 1197.47357 3.39743 ! 15.24000 15.14704 884.96734 8.60353 ! 15.24500 15.44132 -1866.99659 6.14845 ! 15.25000 15.17448 717.46269 3.27462 ! 15.25500 15.11764 1303.50519 8.32704 ! 15.26000 15.44189 -1724.29127 7.27507 ! 15.26500 15.24813 159.76136 3.36375 ! 15.27000 15.09791 1628.01209 7.83318 ! 15.27500 15.42378 -1405.95989 8.38831 ! 15.28000 15.31846 -363.05860 3.96577 ! 15.28500 15.09796 1763.82719 7.46769 ! 15.29000 15.39762 -1013.79712 9.34276 ! 15.29500 15.38829 -877.83179 4.61369 ! 15.30000 15.11666 1723.38545 6.72758 ! 15.30500 15.35006 -423.13305 9.97821 ! 15.31000 15.45448 -1355.24764 5.53225 ! 15.31500 15.15401 1508.51568 5.91542 ! 15.32000 15.29521 232.02973 10.26679 ! 15.32500 15.50263 -1660.84801 6.69474 ! 15.33000 15.21057 1115.49019 5.33135 ! 15.33500 15.24883 803.93616 10.12991 ! 15.34000 15.51945 -1672.45166 7.95863 ! 15.34500 15.28561 552.89511 5.15973 ! 15.35000 15.21414 1263.46755 9.70064 ! 15.35500 15.51227 -1461.04038 9.20671 ! 15.36000 15.37070 -99.31383 5.30582 ! 15.36500 15.20225 1508.67497 8.82923 ! 15.37000 15.48208 -1037.90121 10.00616 ! 15.37500 15.45190 -711.36423 5.63300 ! 15.38000 15.21610 1514.47359 7.64077 ! 15.38500 15.43624 -472.97253 10.24452 ! 15.39000 15.51718 -1172.56326 6.13068 ! 15.39500 15.25271 1310.52042 6.47558 ! 15.40000 15.38373 149.68945 10.12610 ! 15.40500 15.56015 -1425.86561 6.93566 ! 15.41000 15.30782 938.01161 5.71603 ! 15.41500 15.33613 723.20997 9.86908 ! 15.42000 15.57632 -1431.89725 8.09736 ! 15.42500 15.38138 399.13800 5.51546 ! 15.43000 15.30276 1162.93103 9.42064 ! 15.43500 15.56588 -1194.88921 9.34074 ! 15.44000 15.46721 -248.19012 5.73304 ! 15.44500 15.29389 1376.64877 8.55419 ! 15.45000 15.52906 -719.44849 10.19719 ! 15.45500 15.54400 -809.05540 6.37593 ! 15.46000 15.31268 1337.66877 7.69746 ! 15.46500 15.47269 -69.77284 10.86720 ! 15.47000 15.60587 -1230.97476 7.61533 ! 15.47500 15.36635 983.28018 6.99610 ! 15.48000 15.41792 561.23859 10.85739 ! 15.48500 15.63318 -1338.06488 8.91533 ! 15.49000 15.44849 374.38532 6.50613 ! 15.49500 15.37625 1069.97418 10.11703 ! 15.50000 15.62946 -1165.10252 9.87921 ! 15.50500 15.53968 -311.81721 6.18691 ! 15.51000 15.36581 1294.85354 8.64450 ! 15.51500 15.58694 -645.28854 10.26841 ! 15.52000 15.62075 -902.71961 6.39839 ! 15.52500 15.39476 1165.63935 7.05569 ! 15.53000 15.52176 73.64458 10.15390 ! 15.53500 15.67288 -1231.31167 7.25973 ! 15.54000 15.46175 698.03187 5.92653 ! 15.54500 15.45649 788.64320 9.64322 ! 15.55000 15.68272 -1181.23303 8.66175 ! 15.55500 15.55331 15.00359 5.74617 ! 15.56000 15.42847 1167.94461 8.70354 ! 15.56500 15.65201 -771.80072 9.69390 ! 15.57000 15.63962 -616.86686 6.22223 ! 15.57500 15.44337 1164.88284 7.59227 ! 15.58000 15.59512 -133.69338 10.17025 ! 15.58500 15.70448 -1054.97831 7.19857 ! 15.59000 15.49741 816.67792 6.60282 ! 15.59500 15.52942 577.77896 10.08896 ! 15.60000 15.72954 -1139.95977 8.68351 ! 15.60500 15.58345 189.43588 6.30720 ! 15.61000 15.49238 1032.74218 9.36264 ! 15.61500 15.70462 -785.95671 9.97961 ! 15.62000 15.67840 -511.54435 6.73585 ! 15.62500 15.49657 1123.79065 8.26647 ! 15.63000 15.64982 -173.22847 10.64288 ! 15.63500 15.75113 -1013.84618 7.67519 ! 15.64000 15.54636 816.51344 7.18186 ! 15.64500 15.57683 593.73207 10.70747 ! 15.65000 15.77583 -1094.74495 9.45494 ! 15.65500 15.63855 142.94915 7.07545 ! 15.66000 15.53628 1073.90595 10.11759 ! 15.66500 15.74561 -698.90145 11.05510 ! 15.67000 15.73700 -580.20179 7.85734 ! 15.67500 15.54863 1093.11615 9.13963 ! 15.68000 15.67802 17.10019 11.91517 ! 15.68500 15.81316 -1106.03942 9.19282 ! 15.69000 15.61834 617.72128 7.97202 ! 15.69500 15.60490 775.76164 11.45573 ! 15.70000 15.82372 -1063.99838 10.73514 ! 15.70500 15.72277 -152.62670 7.69358 ! 15.71000 15.57765 1135.55932 10.15091 ! 15.71500 15.76787 -453.10162 11.85705 ! 15.72000 15.81812 -839.94243 8.62444 ! 15.72500 15.61196 966.47421 8.94077 ! 15.73000 15.69281 317.63232 12.15104 ! 15.73500 15.86512 -1109.95240 10.17024 ! 15.74000 15.70683 282.63870 8.10195 ! 15.74500 15.63372 947.01573 11.17609 ! 15.75000 15.84218 -783.54687 11.58476 ! 15.75500 15.81286 -491.20004 8.39789 ! 15.76000 15.63481 1061.60804 9.82391 ! 15.76500 15.76549 -4.13776 12.46759 ! 15.77000 15.88954 -1011.35003 9.92887 ! 15.77500 15.70727 572.31336 8.83128 ! 15.78000 15.68810 775.61258 12.20109 ! 15.78500 15.89193 -901.39213 11.88664 ! 15.79000 15.81857 -240.57555 9.03173 ! 15.79500 15.66980 1052.92106 11.06259 ! 15.80000 15.82630 -220.95329 13.14251 ! 15.80500 15.91252 -902.09847 10.33488 ! 15.81000 15.72224 735.44563 9.91825 ! 15.81500 15.74574 579.72811 13.20618 ! 15.82000 15.93351 -948.92626 12.28319 ! 15.82500 15.83266 -63.93048 9.75104 ! 15.83000 15.70431 1048.23587 12.21181 ! 15.83500 15.88475 -414.43435 13.79631 ! 15.84000 15.93573 -796.43552 10.76914 ! 15.84500 15.74067 866.99654 10.94554 ! 15.85000 15.79458 459.97972 14.26298 ! 15.85500 15.97378 -984.70169 12.95117 ! 15.86000 15.84607 115.37201 10.77785 ! 15.86500 15.74082 1026.97217 13.63371 ! 15.87000 15.92629 -464.98120 15.03869 ! 15.87500 15.95702 -676.66873 12.18456 ! 15.88000 15.77306 881.16918 12.69581 ! 15.88500 15.84199 353.94843 15.78361 ! 15.89000 16.00542 -948.71633 14.29669 ! 15.89500 15.87826 137.44090 12.26850 ! 15.90000 15.78830 915.94053 14.90195 ! 15.90500 15.96819 -517.53279 15.89797 ! 15.91000 15.99676 -709.69135 12.82991 ! 15.91500 15.81360 828.42049 13.12674 ! 15.92000 15.87999 326.49219 16.01402 ! 15.92500 16.04550 -982.03667 14.37516 ! 15.93000 15.91676 107.75286 12.18945 ! 15.93500 15.81685 960.54638 14.86019 ! 15.94000 16.00026 -489.30197 16.03831 ! 15.94500 16.03082 -696.00938 13.07503 ! 15.95000 15.84390 859.40002 13.48350 ! 15.95500 15.91066 358.68715 16.52872 ! 15.96000 16.07634 -939.98681 15.07547 ! 15.96500 15.95571 74.95701 12.91290 ! 15.97000 15.85497 927.12240 15.41810 ! 15.97500 16.02197 -378.13683 16.79056 ! 15.98000 16.06608 -692.04459 14.11511 ! 15.98500 15.89486 723.84934 14.19462 ! 15.99000 15.93332 454.57016 17.14067 ! 15.99500 16.10241 -860.31527 16.12631 ! 16.00000 16.00434 -34.71618 13.88873 ! 16.00500 15.88870 929.24958 16.12506 ! 16.01000 16.04346 -267.02390 17.78062 ! 16.01500 16.11150 -769.11296 15.19028 ! 16.02000 15.94470 599.41271 14.76603 ! 16.02500 15.95566 551.23872 17.64266 ! 16.03000 16.13049 -797.86999 17.02608 ! 16.03500 16.06582 -244.43459 14.42032 ! 16.04000 15.92616 901.63165 16.06331 ! 16.04500 16.05951 -114.75578 18.03050 ! 16.05000 16.15492 -828.88829 15.67139 ! 16.05500 15.99875 443.82783 14.70874 ! 16.06000 15.97340 682.44024 17.52441 ! 16.06500 16.15083 -675.49748 17.54177 ! 16.07000 16.11915 -386.32060 14.88722 ! 16.07500 15.97269 803.17207 15.92935 ! 16.08000 16.07075 72.54746 18.11865 ! 16.08500 16.19144 -833.41317 16.21649 ! 16.09000 16.06518 194.06131 14.61811 ! 16.09500 16.00142 730.83791 16.93035 ! 16.10000 16.16245 -487.08229 17.53974 ! 16.10500 16.18086 -590.93327 14.84471 ! 16.11000 16.02546 657.73652 15.01171 ! 16.11500 16.07280 327.91457 17.47584 ! 16.12000 16.21987 -774.97605 16.35819 ! 16.12500 16.13260 -58.92562 14.27343 ! 16.13000 16.03077 768.04040 16.04622 ! 16.13500 16.15842 -181.06669 17.51365 ! 16.14000 16.22995 -694.40524 15.32497 ! 16.14500 16.09491 386.21491 14.55450 ! 16.15000 16.07326 590.89365 16.99727 ! 16.15500 16.22391 -529.91157 17.14973 ! 16.16000 16.20520 -347.14065 14.95709 ! 16.16500 16.07456 693.66181 15.82340 ! 16.17000 16.14565 186.52604 18.02387 ! 16.17500 16.26512 -689.38646 16.76672 ! 16.18000 16.17333 50.97913 15.17070 ! 16.18500 16.09808 663.20245 16.95615 ! 16.19000 16.22513 -267.67335 17.94497 ! 16.19500 16.27534 -611.36066 15.74739 ! 16.20000 16.14717 401.49292 15.22272 ! 16.20500 16.14539 452.41255 17.35748 ! 16.21000 16.27831 -517.81325 17.19398 ! 16.21500 16.25199 -280.04480 15.19934 ! 16.22000 16.13446 646.68039 16.11593 ! 16.22500 16.20074 183.14459 18.19049 ! 16.23000 16.30748 -584.16600 17.18793 ! 16.23500 16.22651 63.93347 15.88735 ! 16.24000 16.15127 667.28314 17.71540 ! 16.24500 16.26729 -167.42849 18.96503 ! 16.25000 16.32428 -557.06672 17.15379 ! 16.25500 16.21365 309.71758 16.53542 ! 16.26000 16.19725 469.37587 18.48315 ! 16.26500 16.32514 -449.28251 18.53339 ! 16.27000 16.32293 -394.86609 16.42302 ! 16.27500 16.20855 495.08175 16.67356 ! 16.28000 16.25220 206.84701 18.42838 ! 16.28500 16.36323 -581.24021 17.49239 ! 16.29000 16.30595 -118.35662 15.74340 ! 16.29500 16.22359 529.12030 16.77031 ! 16.30000 16.30911 -67.40385 17.92460 ! 16.30500 16.38044 -557.50266 16.36234 ! 16.31000 16.29197 133.08767 15.30130 ! 16.31500 16.25246 460.93282 16.78635 ! 16.32000 16.35337 -245.61909 17.32463 ! 16.32500 16.38116 -412.77044 15.67866 ! 16.33000 16.28421 336.10306 15.48699 ! 16.33500 16.28453 369.95588 17.25214 ! 16.34000 16.39082 -371.97518 17.24709 ! 16.34500 16.37616 -227.78130 15.74770 ! 16.35000 16.28642 464.15992 16.33865 ! 16.35500 16.32895 189.89599 17.97379 ! 16.36000 16.42530 -475.39109 17.26005 ! 16.36500 16.37746 -90.55712 15.84518 ! 16.37000 16.30182 494.99927 16.85628 ! 16.37500 16.37840 -24.63359 18.03220 ! 16.38000 16.44496 -470.31976 16.79481 ! 16.38500 16.36563 140.07869 15.96921 ! 16.39000 16.32962 435.95660 17.40930 ! 16.39500 16.42349 -205.41143 17.98566 ! 16.40000 16.44833 -347.94877 16.60226 ! 16.40500 16.36653 276.59291 16.42387 ! 16.41000 16.36870 296.50728 17.85662 ! 16.41500 16.45662 -298.44581 17.85178 ! 16.42000 16.45124 -223.64843 16.54654 ! 16.42500 16.37586 351.33251 16.86575 ! 16.43000 16.40107 206.55362 18.26047 ! 16.43500 16.48271 -340.17976 17.92640 ! 16.44000 16.45184 -84.33181 16.86512 ! 16.44500 16.38693 412.89500 17.68653 ! 16.45000 16.43891 78.73163 18.91560 ! 16.45500 16.50462 -351.79981 18.23293 ! 16.46000 16.45684 22.38589 17.40939 ! 16.46500 16.41224 373.00622 18.39787 ! 16.47000 16.47751 -53.00630 19.19787 ! 16.47500 16.52095 -323.96806 18.25544 ! 16.48000 16.46409 112.02827 17.72559 ! 16.48500 16.43472 353.48842 18.88938 ! 16.49000 16.50404 -98.55397 19.52671 ! 16.49500 16.53201 -259.42544 18.63177 ! 16.50000 16.47155 199.13676 18.48104 ! 16.50500 16.46296 293.83708 19.71348 ! 16.51000 16.53416 -168.62850 20.02650 ! 16.51500 16.54974 -242.15213 18.99955 ! 16.52000 16.48926 213.95431 18.92905 ! 16.52500 16.48917 249.00308 20.08645 ! 16.53000 16.55711 -188.11375 20.23867 ! 16.53500 16.55936 -168.78317 19.34643 ! 16.54000 16.50009 276.18818 19.61494 ! 16.54500 16.51360 216.96697 20.84783 ! 16.55000 16.58303 -227.87786 20.82055 ! 16.55500 16.56980 -101.98717 19.99589 ! 16.56000 16.51733 293.54571 20.47479 ! 16.56500 16.54233 155.71783 21.59794 ! 16.57000 16.60597 -246.77742 21.37030 ! 16.57500 16.58829 -91.02531 20.52579 ! 16.58000 16.54025 271.87810 20.97792 ! 16.58500 16.56983 103.59777 21.91661 ! 16.59000 16.62000 -204.63282 21.66402 ! 16.59500 16.60322 -55.97305 21.01251 ! 16.60000 16.56562 233.75110 21.45695 ! 16.60500 16.59274 83.22962 22.24940 ! 16.61000 16.63920 -197.98166 21.96252 ! 16.61500 16.61802 -20.46480 21.41641 ! 16.62000 16.58403 243.14826 21.97312 ! 16.62500 16.61467 69.73553 22.75533 ! 16.63000 16.66021 -203.63203 22.42059 ! 16.63500 16.63708 -13.96787 21.87659 ! 16.64000 16.60247 252.18616 22.47213 ! 16.64500 16.63794 47.36397 23.22101 ! 16.65000 16.67934 -196.60591 22.84790 ! 16.65500 16.65301 13.33859 22.38973 ! 16.66000 16.62137 258.01864 23.06813 ! 16.66500 16.65643 57.15664 23.85606 ! 16.67000 16.70023 -201.36229 23.49555 ! 16.67500 16.66958 36.04939 23.08227 ! 16.68000 16.63882 273.43080 23.85597 ! 16.68500 16.67913 38.95048 24.63692 ! 16.69000 16.72144 -208.10602 24.21403 ! 16.69500 16.69157 22.65403 23.75040 ! 16.70000 16.66013 263.12920 24.46486 ! 16.70500 16.69919 38.29645 25.21843 ! 16.71000 16.74068 -201.85838 24.80952 ! 16.71500 16.71270 15.12057 24.34268 ! 16.72000 16.68326 241.00266 24.98298 ! 16.72500 16.72262 15.60780 25.62451 ! 16.73000 16.76521 -230.30605 25.08776 ! 16.73500 16.73655 -10.11929 24.48670 ! 16.74000 16.70524 226.63446 25.02799 ! 16.74500 16.74439 3.97432 25.60451 ! 16.75000 16.78549 -230.65610 25.03781 ! 16.75500 16.75582 -5.32656 24.44785 ! 16.76000 16.72365 235.55882 25.02343 ! 16.76500 16.76009 31.79951 25.69183 ! 16.77000 16.80262 -210.75322 25.24444 ! 16.77500 16.77690 -12.25073 24.68693 ! 16.78000 16.74412 231.09235 25.23404 ! 16.78500 16.78076 27.29094 25.87999 ! 16.79000 16.82033 -194.72539 25.46141 ! 16.79500 16.79715 -13.80647 24.94008 ! 16.80000 16.76411 229.68211 25.47977 ! 16.80500 16.79108 88.96590 26.27639 ! 16.81000 16.83991 -190.84421 26.02169 ! 16.81500 16.81985 -30.86313 25.46742 ! 16.82000 16.77991 254.96469 26.02768 ! 16.82500 16.80855 104.48560 26.92630 ! 16.83000 16.85963 -187.87715 26.71782 ! 16.83500 16.84452 -60.28830 26.09741 ! 16.84000 16.80459 223.80112 26.50619 ! 16.84500 16.82627 118.19877 27.36119 ! 16.85000 16.88081 -194.08466 27.17148 ! 16.85500 16.87400 -119.53982 26.38742 ! 16.86000 16.82601 213.47167 26.62225 ! 16.86500 16.84108 149.99210 27.53091 ! 16.87000 16.89545 -159.28970 27.50766 ! 16.87500 16.89206 -106.60158 26.84293 ! 16.88000 16.85216 173.70309 27.01069 ! 16.88500 16.86138 147.15166 27.81282 ! 16.89000 16.91332 -145.03822 27.81811 ! 16.89500 16.91862 -146.66555 27.08885 ! 16.90000 16.87271 169.20292 27.14519 ! 16.90500 16.87221 202.99791 28.07569 ! 16.91000 16.92584 -97.89202 28.33846 ! 16.91500 16.94610 -191.88544 27.61402 ! 16.92000 16.90052 119.97617 27.43424 ! 16.92500 16.88554 242.70412 28.34094 ! 16.93000 16.93568 -34.87788 28.86051 ! 16.93500 16.96544 -186.56851 28.30689 ! 16.94000 16.93070 56.92069 27.98277 ! 16.94500 16.90964 216.05527 28.66521 ! 16.95000 16.95068 -4.17438 29.19492 ! 16.95500 16.98988 -212.44564 28.65336 ! 16.96000 16.96224 -13.62226 28.08820 ! 16.96500 16.92922 217.17823 28.59709 ! 16.97000 16.96310 41.84106 29.24463 ! 16.97500 17.00447 -178.27811 28.90354 ! 16.98000 16.98483 -29.17348 28.38491 ! 16.98500 16.94809 222.58966 28.86845 ! 16.99000 16.96525 148.96608 29.79734 ! 16.99500 17.01456 -117.54196 29.87590 ! 17.00000 17.01868 -112.10862 29.30178 ! 17.00500 16.97422 184.37649 29.48245 ! 17.01000 16.97506 208.91287 30.46567 ! 17.01500 17.03262 -105.17049 30.72502 ! 17.02000 17.05251 -193.77554 29.97766 ! 17.02500 17.00660 109.50897 29.76699 ! 17.03000 16.99081 232.78467 30.62273 ! 17.03500 17.04282 -46.37349 31.08875 ! 17.04000 17.07511 -207.83380 30.45324 ! 17.04500 17.03280 72.10822 30.11392 ! 17.05000 16.99978 296.29663 31.03493 ! 17.05500 17.04473 60.51651 31.92697 ! 17.06000 17.09257 -191.51883 31.59946 ! 17.06500 17.06689 -11.11760 31.09287 ! 17.07000 17.02670 253.75327 31.69946 ! 17.07500 17.05279 129.90364 32.65860 ! 17.08000 17.11018 -176.27267 32.54268 ! 17.08500 17.11091 -151.06455 31.72434 ! 17.09000 17.06285 158.02279 31.74173 ! 17.09500 17.05914 208.32732 32.65761 ! 17.10000 17.12321 -134.59231 32.84195 ! 17.10500 17.14645 -240.02401 31.90540 ! 17.11000 17.09880 64.72210 31.46715 ! 17.11500 17.07685 220.13622 32.17930 ! 17.12000 17.12777 -44.73270 32.61780 ! 17.12500 17.17129 -266.17813 31.84053 ! 17.13000 17.13751 -43.13436 31.06725 ! 17.13500 17.09599 223.50887 31.51818 ! 17.14000 17.13069 53.22626 32.21002 ! 17.14500 17.18832 -247.32978 31.72476 ! 17.15000 17.17579 -146.98810 30.73897 ! 17.15500 17.12433 174.48489 30.80771 ! 17.16000 17.12938 173.91151 31.67870 ! 17.16500 17.18693 -124.33942 31.80263 ! 17.17000 17.20363 -190.36522 31.01587 ! 17.17500 17.15505 112.72380 30.82176 ! 17.18000 17.13585 248.98564 31.72604 ! 17.18500 17.18806 -17.22742 32.30543 ! 17.19000 17.22946 -221.76482 31.70795 ! 17.19500 17.20043 -30.48637 31.07732 ! 17.20000 17.15950 226.81688 31.56815 ! 17.20500 17.19203 72.48111 32.31640 ! 17.21000 17.25093 -228.40877 31.92658 ! 17.21500 17.24739 -180.39141 30.90458 ! 17.22000 17.19358 146.90450 30.82086 ! 17.22500 17.19194 183.46069 31.64677 ! 17.23000 17.25139 -118.50768 31.80915 ! 17.23500 17.27648 -229.41068 30.93936 ! 17.24000 17.22903 60.57481 30.51727 ! 17.24500 17.19993 248.35591 31.28960 ! 17.25000 17.24501 27.46891 31.97916 ! 17.25500 17.29840 -238.24466 31.45222 ! 17.26000 17.27773 -97.13715 30.61376 ! 17.26500 17.22694 208.16188 30.89133 ! 17.27000 17.24407 141.57024 31.76566 ! 17.27500 17.30136 -143.64337 31.76047 ! 17.28000 17.30799 -152.26765 31.02070 ! 17.28500 17.26114 129.58656 30.96399 ! 17.29000 17.24698 233.18832 31.87093 ! 17.29500 17.29547 -2.54152 32.44755 ! 17.30000 17.33025 -163.34217 32.03284 ! 17.30500 17.30069 23.22313 31.68254 ! 17.31000 17.27179 205.55331 32.25448 ! 17.31500 17.30112 74.55921 32.95476 ! 17.32000 17.34954 -158.33766 32.74532 ! 17.32500 17.34505 -107.26709 32.08131 ! 17.33000 17.30876 113.40009 32.09664 ! 17.33500 17.31321 116.14144 32.67049 ! 17.34000 17.35768 -94.06452 32.72568 ! 17.34500 17.37431 -155.62389 32.10146 ! 17.35000 17.34694 16.22509 31.75297 ! 17.35500 17.33098 127.04008 32.11113 ! 17.36000 17.35695 16.10147 32.46898 ! 17.36500 17.38640 -112.80073 32.22723 ! 17.37000 17.37646 -33.97954 31.86028 ! 17.37500 17.35381 111.26649 32.05350 ! 17.38000 17.35660 122.62818 32.63824 ! 17.38500 17.39118 -32.34358 32.86395 ! 17.39000 17.40733 -90.45147 32.55696 ! 17.39500 17.38915 30.50052 32.40708 ! 17.40000 17.37153 148.04735 32.85345 ! 17.40500 17.39684 42.33695 33.32941 ! 17.41000 17.43135 -110.56893 33.15883 ! 17.41500 17.42475 -50.40590 32.75640 ! 17.42000 17.40170 94.45192 32.86651 ! 17.42500 17.40672 94.12313 33.33795 ! 17.43000 17.43965 -49.60070 33.44926 ! 17.43500 17.45635 -109.54147 33.05140 ! 17.44000 17.43906 4.80050 32.78955 ! 17.44500 17.42586 97.81543 33.04609 ! 17.45000 17.44787 10.87936 33.31783 ! 17.45500 17.47456 -99.56857 33.09610 ! 17.46000 17.47686 -85.62997 32.63311 ! 17.46500 17.45810 34.96474 32.50644 ! 17.47000 17.45333 84.33616 32.80470 ! 17.47500 17.47754 -12.84679 32.98342 ! 17.48000 17.50086 -105.12565 32.68849 ! 17.48500 17.49007 -25.49677 32.36193 ! 17.49000 17.46855 107.68654 32.56741 ! 17.49500 17.47355 107.48231 33.10533 ! 17.50000 17.50769 -38.46474 33.27787 ! 17.50500 17.52187 -84.16278 32.97130 ! 17.51000 17.50217 38.96907 32.85832 ! 17.51500 17.49000 124.26483 33.26640 ! 17.52000 17.50979 50.62917 33.70364 ! 17.52500 17.54176 -82.94055 33.62286 ! 17.53000 17.54448 -71.51797 33.23671 ! 17.53500 17.52502 49.18916 33.18089 ! 17.54000 17.51858 105.37713 33.56731 ! 17.54500 17.54372 6.27564 33.84644 ! 17.55000 17.56975 -96.75191 33.62025 ! 17.55500 17.56203 -34.36389 33.29246 ! 17.56000 17.54676 64.61450 33.36809 ! 17.56500 17.54842 80.75775 33.73152 ! 17.57000 17.57566 -27.52896 33.86459 ! 17.57500 17.59347 -89.57024 33.57184 ! 17.58000 17.58200 -9.69354 33.32368 ! 17.58500 17.56166 112.72991 33.58127 ! 17.59000 17.57022 95.33914 34.10144 ! 17.59500 17.59819 -15.34909 34.30142 ! 17.60000 17.61270 -60.98325 34.11059 ! 17.60500 17.60231 12.89194 33.99036 ! 17.61000 17.58845 103.02174 34.28014 ! 17.61500 17.60059 68.75558 34.70959 ! 17.62000 17.62977 -46.48267 34.76527 ! 17.62500 17.64186 -80.07449 34.44888 ! 17.63000 17.63134 -6.34238 34.23284 ! 17.63500 17.61875 76.84906 34.40910 ! 17.64000 17.62952 49.48690 34.72494 ! 17.64500 17.65210 -33.42861 34.76509 ! 17.65000 17.66039 -48.85378 34.55938 ! 17.65500 17.64596 42.41437 34.54328 ! 17.66000 17.63846 100.78481 34.90128 ! 17.66500 17.65966 24.94243 35.21560 ! 17.67000 17.68210 -56.39823 35.13696 ! 17.67500 17.68569 -49.71308 34.87168 ! 17.68000 17.67724 12.80019 34.77940 ! 17.68500 17.66979 70.43394 34.98748 ! 17.69000 17.68477 24.14396 35.22393 ! 17.69500 17.70492 -45.71971 35.16999 ! 17.70000 17.70811 -37.29787 34.96245 ! 17.70500 17.69898 27.62304 34.93826 ! 17.71000 17.69806 54.66973 35.14399 ! 17.71500 17.71074 19.44846 35.32929 ! 17.72000 17.73036 -47.24815 35.25979 ! 17.72500 17.73802 -59.23007 34.99359 ! 17.73000 17.73029 -1.31621 34.84223 ! 17.73500 17.72747 34.09491 34.92417 ! 17.74000 17.74289 -13.05787 34.97677 ! 17.74500 17.76454 -88.10688 34.72385 ! 17.75000 17.76658 -74.60227 34.31708 ! 17.75500 17.75478 0.98080 34.13303 ! 17.76000 17.75428 25.63532 34.19957 ! 17.76500 17.77189 -30.81304 34.18662 ! 17.77000 17.79193 -97.81360 33.86506 ! 17.77500 17.78888 -61.78229 33.46607 ! 17.78000 17.77211 35.02358 33.39917 ! 17.78500 17.77523 43.26953 33.59490 ! 17.79000 17.79920 -40.67253 33.60139 ! 17.79500 17.82036 -111.85354 33.22008 ! 17.80000 17.81439 -63.32490 32.78213 ! 17.80500 17.79703 34.99547 32.71131 ! 17.81000 17.79780 53.42755 32.93237 ! 17.81500 17.82199 -30.56019 32.98954 ! 17.82000 17.84111 -92.04655 32.68302 ! 17.82500 17.83671 -50.95338 32.32552 ! 17.83000 17.81609 60.38134 32.34909 ! 17.83500 17.81443 89.08783 32.72276 ! 17.84000 17.83773 9.79944 32.96998 ! 17.84500 17.86083 -68.21479 32.82394 ! 17.85000 17.86133 -48.72952 32.53158 ! 17.85500 17.83963 65.93319 32.57459 ! 17.86000 17.83265 117.07213 33.03210 ! 17.86500 17.85631 37.10347 33.41754 ! 17.87000 17.88859 -79.21178 33.31227 ! 17.87500 17.89132 -69.37662 32.94080 ! 17.88000 17.86543 61.75731 32.92175 ! 17.88500 17.85571 123.91731 33.38594 ! 17.89000 17.88262 31.14848 33.77360 ! 17.89500 17.91571 -87.20272 33.63347 ! 17.90000 17.91719 -72.17935 33.23501 ! 17.90500 17.88859 68.74211 33.22642 ! 17.91000 17.87543 144.50201 33.75953 ! 17.91500 17.90173 55.33949 34.25913 ! 17.92000 17.93553 -64.61194 34.23595 ! 17.92500 17.94154 -68.64880 33.90280 ! 17.93000 17.91527 60.99436 33.88366 ! 17.93500 17.90070 141.66470 34.39031 ! 17.94000 17.92158 75.89089 34.93420 ! 17.94500 17.95854 -55.64650 34.98481 ! 17.95000 17.97043 -83.74903 34.63632 ! 17.95500 17.95142 14.64156 34.46355 ! 17.96000 17.92871 127.66784 34.81933 ! 17.96500 17.94211 93.15871 35.37139 ! 17.97000 17.98150 -46.68448 35.48758 ! 17.97500 18.00017 -101.93195 35.11604 ! 17.98000 17.98082 -3.32151 34.85291 ! 17.98500 17.95359 126.58266 35.16106 ! 17.99000 17.96369 105.75328 35.74190 ! 17.99500 17.99899 -16.00690 35.96626 ! 18.00000 18.02907 -116.29746 35.63550 ! 18.00500 18.02129 -65.00062 35.18226 ! 18.01000 17.99489 60.15254 35.17014 ! 18.01500 17.98839 105.62457 35.58458 ! 18.02000 18.01516 19.16016 35.89654 ! 18.02500 18.04544 -80.75226 35.74256 ! 18.03000 18.04707 -67.26391 35.37252 ! 18.03500 18.02426 42.22181 35.30992 ! 18.04000 18.00468 138.43861 35.76157 ! 18.04500 18.01616 112.76136 36.38957 ! 18.05000 18.04898 3.98401 36.68143 ! 18.05500 18.06862 -52.98265 36.55893 ! 18.06000 18.05960 1.55645 36.43037 ! 18.06500 18.03896 100.76000 36.68616 ! 18.07000 18.04687 89.28107 37.16126 ! 18.07500 18.08205 -27.15370 37.31658 ! 18.08000 18.10917 -112.02780 36.96863 ! 18.08500 18.10060 -59.75393 36.53917 ! 18.09000 18.07536 55.92214 36.52959 ! 18.09500 18.06886 99.57580 36.91834 ! 18.10000 18.09045 36.28094 37.25798 ! 18.10500 18.11587 -41.18766 37.24571 ! 18.11000 18.11499 -18.85806 37.09560 ! 18.11500 18.09760 65.58453 37.21242 ! 18.12000 18.08864 117.92415 37.67119 ! 18.12500 18.10353 80.51270 38.16728 ! 18.13000