********>Master Bugfix File - AmberTools bugfixes for version 1.4, fixes 1-16 Programs: AmberTools Description: This is the master bugfix file for AmberTools-1.4. It contains all of the bugfixes released against version 1.4 in a single patch script. Usage: Save this file in your $AMBERHOME directory and then apply this patch file to your distribution as follows: cd $AMBERHOME patch -p0 -N bugfix 1 Author: Junmei Wang Date: 30 April 2010 Programs: gaff.dat Description: This patch adds the "cz" atom type to the list of atoms, and cleans ups to someunsed parameters. Fix: Apply the following fix to amber11/dat/leap/parm/gaff.dat --------------------------------------------------------------------------- --- dat/leap/parm/gaff.dat 2010-04-29 16:14:08.000000000 -0400 +++ dat/leap/parm/gaff.dat 2010-04-30 07:38:51.000000000 -0400 @@ -16,6 +16,7 @@ cy 12.01 0.360 Sp3 carbons in square systems cu 12.01 0.360 Sp2 carbons in triangle systems cv 12.01 0.360 Sp2 carbons in square systems +cz 12.01 0.360 Sp2 carbon in guanidine group h1 1.008 0.135 H bonded to aliphatic carbon with 1 electrwd. group h2 1.008 0.135 H bonded to aliphatic carbon with 2 electrwd. group h3 1.008 0.135 H bonded to aliphatic carbon with 3 electrwd. group @@ -852,11 +853,6 @@ s6-ss 139.6 2.1180 SOURCE3 5 0.0209 sh-sh 158.9 2.0580 SOURCE2 1 0.0000 sh-ss 155.8 2.0670 SOURCE3 3 0.0029 -Si-c3 189.8 1.8928 SOURCE4 77 0.0061 -Si-ca 191.1 1.8898 SOURCE4 11 0.0028 -Si-ha 186.3 1.4887 SOURCE4 6 0.0040 -Si-oh 267.6 1.6792 SOURCE4 6 0.0035 -Si-os 287.7 1.6524 SOURCE4 22 0.0057 s -s 169.0 2.0300 SOURCE3 1 0.0000 s -s2 229.2 1.8970 SOURCE1 5 0.0000 s -s4 152.8 2.0760 SOURCE3 4 0.0345 @@ -1091,7 +1087,6 @@ hc-c2-s6 54.150 115.450 SOURCE3 1 hc-c2-sh 53.550 115.630 SOURCE3 1 hc-c2-ss 54.900 115.620 SOURCE3 1 -hn-c2-n4 0.000 112.740 SOURCE3 1 hx-c2-n4 48.420 113.030 SOURCE3 3 0.3873 i -c2-i 60.960 117.940 SOURCE3 1 0.0000 n1-c2-n1 73.610 124.150 HF/6-31G* 1 @@ -1464,9 +1459,6 @@ s6-c3-s6 102.050 111.750 SOURCE3 1 0.0000 sh-c3-sh 97.420 116.260 SOURCE3 1 0.0000 sh-c3-ss 99.850 110.730 SOURCE3 1 -Si-c3-c3 74.610 114.340 SOURCE4 26 1.1613 -Si-c3-h1 51.040 110.900 SOURCE4 17 1.0270 -Si-c3-hc 50.960 111.210 SOURCE4 222 0.4865 s -c3-s 93.400 123.350 SOURCE3 1 0.0000 ss-c3-ss 99.950 110.570 SOURCE4 15 1.4311 br-ca-br 67.310 117.600 SOURCE3 1 @@ -1500,7 +1492,6 @@ ca-ca-i 58.590 118.470 SOURCE3 10 0.6181 ca-ca-n1 68.920 118.500 HF/6-31G* 1 ca-ca-n2 70.950 119.570 SOURCE3 1 -ca-ca-n3 0.000 121.190 SOURCE3 1 ca-ca-n4 67.280 118.410 SOURCE3 6 0.1691 ca-ca-n 67.970 119.890 SOURCE3 18 0.2095 ca-ca-na 70.210 118.340 SOURCE3 54 3.6168 @@ -1540,7 +1531,6 @@ cf-ca-nb 68.080 118.140 SOURCE4 12 1.1775 cg-ca-cp 65.330 121.530 SOURCE4 12 0.1831 c -ca-ha 46.510 115.900 SOURCE3 1 -c -ca-hc 0.000 120.000 SOURCE3 1 cl-ca-cl 62.630 118.720 SOURCE3 1 cl-ca-cp 62.600 120.310 SOURCE4 18 0.5607 cl-ca-nb 65.810 116.150 SOURCE4 50 0.6047 @@ -1606,7 +1596,6 @@ s4-ca-s4 104.060 105.810 SOURCE3 1 s6-ca-s6 105.770 105.810 SOURCE3 1 sh-ca-sh 98.150 120.240 SOURCE3 1 -Si-ca-ca 73.850 121.430 SOURCE4 19 0.4235 s -ca-s 98.380 125.140 SOURCE3 1 ss-ca-ss 100.760 115.150 SOURCE3 1 br-c -br 66.910 113.100 SOURCE3 1 @@ -1636,7 +1625,6 @@ c3-c -n 67.860 115.150 SOURCE3 153 2.7443 c3-c -ne 68.090 111.390 SOURCE4 11 2.1430 c3-c -nf 67.430 113.380 SOURCE3 1 same_as_c3-c-ne -c3-c -nh 0.000 113.580 SOURCE3 1 c3-c -o 68.030 123.110 SOURCE3 267 3.0977 c3-c -oh 69.840 112.200 SOURCE3 14 1.8324 c3-c -os 69.260 111.960 SOURCE3 15 2.3072 @@ -1832,7 +1820,6 @@ ha-cc-os 52.490 110.860 SOURCE3 7 1.3846 ha-cc-pd 42.350 121.760 SOURCE3 84 same_as_ha-cd-pc ha-cc-ss 53.490 121.640 SOURCE2 5 1.3276 -c -c -hc 0.000 117.080 SOURCE3 1 ch-c -ch 65.440 115.380 SOURCE3 1 same_as_cg-c-cg ch-c -ha 47.800 113.900 SOURCE2 1 same_as_cg-c-ha ch-c -o 70.210 122.310 SOURCE3 2 same_as_cg-c-o @@ -2183,7 +2170,6 @@ c -cf-n 66.600 116.790 SOURCE4 8 0.8255 c -cf-nh 65.940 122.760 SOURCE3 1 same_as_c-ce-nh f -c -f 72.220 107.350 SOURCE2 2 0.2500 -f -c -h 0.000 109.900 SOURCE2 1 0.0000 h4-cf-n2 52.210 122.140 SOURCE4 11 0.9297 h4-cf-ne 52.280 120.210 SOURCE4 6 0.8104 ha-cf-n1 52.480 115.960 SOURCE3 2 3.5425 @@ -2239,34 +2225,20 @@ cf-ch-cg 57.400 177.900 SOURCE4 8 0.4883 cf-ch-n1 59.370 178.120 SOURCE4 22 1.5200 cg-ch-ch 58.680 179.670 SOURCE4 7 0.1439 -hc-c -hc 0.000 115.680 SOURCE3 1 -hc-c -n 0.000 120.000 SOURCE3 1 -hc-c -nh 0.000 112.700 SOURCE3 1 -hc-c -o 0.000 120.000 SOURCE3 1 -hc-c -oh 0.000 113.700 SOURCE3 1 -hc-c -os 0.000 113.580 SOURCE3 1 n1-ch-nf 64.660 176.170 SOURCE2 3 same_as_n1-cg-ne -h -c -o 0.000 127.300 SOURCE2 1 0.0000 i -c -i 59.790 116.450 SOURCE3 1 0.0000 i -c -o 55.510 122.020 SOURCE3 4 1.2961 f -cl-f 50.000 87.500 SOURCE2 1 estimated_force_constant n2-c -n2 71.830 110.310 SOURCE3 1 -n2-c -na 0.000 118.600 SOURCE3 1 n2-c -o 73.020 122.500 SOURCE3 1 -n3-c -n3 0.000 112.980 SOURCE3 1 -n3-c -o 0.000 122.260 SOURCE3 1 n4-c -n4 64.710 114.640 SOURCE3 1 0.0000 n4-c -o 69.580 118.830 SOURCE3 4 3.8516 -na-c -na 0.000 115.400 SOURCE3 1 -na-c -o 0.000 122.850 SOURCE3 1 nc-c -o 74.050 123.980 SOURCE4 66 0.9502 nd-c -o 73.720 121.760 SOURCE4 55 1.1138 ne-c -ne 73.220 110.310 SOURCE3 1 0.0000 ne-c -o 72.940 126.030 SOURCE4 39 0.9885 nf-c -nf 73.070 110.310 SOURCE3 1 same_as_ne-c-ne nf-c -o 73.320 124.390 SOURCE3 3 same_as_ne-c-o -nh-c -nh 0.000 110.980 SOURCE3 1 -nh-c -o 0.000 124.620 SOURCE3 1 n -c -n 74.800 113.380 SOURCE4 635 1.4358 n -c -nc 72.690 117.050 SOURCE4 54 0.7020 n -c -nd 71.900 117.060 SOURCE4 23 0.9856 @@ -2318,10 +2290,10 @@ py-c -py 57.520 123.800 SOURCE3 1 0.0000 ca-cq-ca 67.000 118.240 SOURCE4 5 0.2181 ca-cq-cq 64.220 120.410 SOURCE4 12 1.4029 -ca-cq-nb 0.000 122.970 SOURCE3 2 0.0000 +ca-cq-nb 69.270 121.650 SOURCE4 63 same as ca-cp-nb cp-cq-cq 62.640 124.470 SOURCE4 5 1.0864 cq-cq-cq 72.200 90.000 SOURCE3 4 0.0000 -cq-cq-nb 0.000 116.430 SOURCE3 2 0.0000 +cq-cq-nb 68.050 116.600 SOURCE4 88 same as cp-cp-nb s4-c -s4 98.110 108.810 SOURCE3 1 s6-c -s6 95.130 115.750 SOURCE3 1 sh-c -sh 100.060 115.330 SOURCE3 1 0.0000 @@ -2454,9 +2426,6 @@ n -cy-s6 82.570 103.450 SOURCE4 6 0.7197 n -cy-ss 82.030 105.120 SOURCE4 69 0.3987 nh-cz-nh 72.970 120.170 SOURCE4 26 0.3964 -ca-i -cl 0.000 90.210 SOURCE3 2 estimated_force_constant -ca-i -o 0.000 97.080 SOURCE3 5 0.2233,estimated_force_constant -cl-i -cl 0.000 179.580 SOURCE3 1 estimated_force_constant br-n1-c1 51.100 180.000 HF/6-31G* 1 c1-n1-c1 64.910 179.920 HF/6-31G* 1 c1-n1-c2 60.250 177.730 HF/6-31G* 1 @@ -2729,7 +2698,6 @@ c2-n3-c2 66.220 124.680 SOURCE3 1 c2-n3-hn 49.110 119.380 SOURCE3 1 c3-n3-c3 64.010 110.900 SOURCE3 40 2.3048 -c3-n3-ca 0.000 116.390 SOURCE3 1 c3-n3-cl 62.170 107.230 SOURCE3 3 0.3673 c3-n3-cx 62.450 116.320 SOURCE4 24 0.5119 c3-n3-cy 61.690 118.260 SOURCE4 14 0.8788 @@ -2753,7 +2721,6 @@ c3-n3-sh 78.550 112.700 SOURCE3 1 0.0000 c3-n3-ss 77.950 116.010 SOURCE3 3 1.1944 c3-n3-sy 79.010 115.270 SOURCE4 108 1.7647 -c -n3-c 0.000 127.170 SOURCE3 1 cl-n3-cl 61.850 108.280 SOURCE3 1 0.0000 cl-n3-hn 42.590 104.390 SOURCE3 2 0.0000 cl-n3-n3 63.750 107.650 SOURCE3 1 0.0000 @@ -2824,7 +2791,6 @@ c1-n4-hn 48.620 110.190 SOURCE3 7 1.0847 c2-n4-c2 63.010 112.580 SOURCE3 1 0.0000 c2-n4-c3 63.100 110.960 SOURCE4 13 2.4632 -c2-n4-h4 0.000 112.460 SOURCE3 1 c2-n4-hn 46.430 111.360 SOURCE3 13 1.2672 c3-n4-c3 62.840 110.640 SOURCE3 13 1.3060 c3-n4-ca 63.610 110.400 SOURCE4 46 1.4643 @@ -3002,10 +2968,6 @@ ca-na-s 75.010 125.640 SOURCE3 1 ca-na-sh 76.630 125.440 SOURCE3 1 ca-na-ss 74.880 129.910 SOURCE4 8 0.1449 -c -na-c 0.000 126.400 SOURCE3 1 -c -na-c2 0.000 125.090 SOURCE3 1 -c -na-c3 0.000 117.600 SOURCE3 1 -c -na-ca 0.000 125.200 SOURCE3 1 cc-na-cc 68.940 109.900 SOURCE3 109 1.5547 cc-na-cd 63.880 128.010 SOURCE3 1 0.0000 cc-na-ce 63.050 126.610 SOURCE4 8 0.5158 @@ -3058,7 +3020,6 @@ cd-na-s 74.800 125.660 SOURCE3 8 0.1880 cd-na-sh 76.830 123.960 SOURCE3 10 0.3424 cd-na-ss 77.930 119.180 SOURCE3 36 5.0538 -c -na-hn 0.000 118.000 SOURCE3 1 cl-na-cl 56.330 122.800 SOURCE3 1 cl-na-nc 59.890 119.360 SOURCE3 4 1.7128 cl-na-nd 59.890 119.360 SOURCE3 4 same_as_cl-na-nc @@ -3067,7 +3028,6 @@ cl-na-pc 58.780 120.510 SOURCE3 3 2.1985 cl-na-pd 58.780 120.510 SOURCE3 3 same_as_cl-na-pc cl-na-ss 77.180 111.910 SOURCE3 1 0.0000 -c -na-n 0.000 124.660 SOURCE3 1 f -na-f 62.220 120.200 SOURCE3 1 f -na-nc 66.640 118.050 SOURCE3 4 1.7931 f -na-nd 66.640 118.050 SOURCE3 4 same_as_f-na-nc @@ -3231,7 +3191,7 @@ sy-na-sy 96.930 123.200 SOURCE3 1 ca-nb-ca 68.590 115.860 SOURCE3 46 1.1645 ca-nb-cp 68.010 118.040 SOURCE4 58 0.7819 -ca-nb-cq 0.000 117.040 SOURCE3 2 0.0000 +ca-nb-cq 68.010 118.040 SOURCE4 58 same as ca-nb-cp ca-nb-nb 69.370 118.890 SOURCE3 10 0.6031 cp-nb-nb 68.790 121.110 SOURCE4 12 0.4315 nb-nb-nb 70.440 121.040 SOURCE3 1 0.0000 @@ -3597,8 +3557,6 @@ ca-nh-sh 78.190 121.410 SOURCE3 1 0.0000 ca-nh-ss 78.160 121.500 SOURCE3 3 2.6255 ca-nh-sy 76.750 125.260 SOURCE4 41 1.7517 -c -nh-c 0.000 119.570 SOURCE3 1 -c -nh-ca 0.000 123.570 SOURCE3 1 cc-nh-cx 63.320 122.820 SOURCE4 42 1.1841 cc-nh-hn 48.860 117.160 SOURCE3 11 2.6137 cc-nh-n2 68.230 119.660 SOURCE4 5 1.3903 @@ -3610,10 +3568,8 @@ ce-nh-sy 80.450 112.970 SOURCE4 7 1.0636 cf-nh-hn 48.620 115.620 SOURCE4 16 1.3549 cf-nh-o 67.070 129.430 SOURCE3 1 same_as_ce-nh-o -c -nh-hn 0.000 115.730 SOURCE3 1 cl-nh-cl 62.930 106.600 SOURCE3 1 cl-nh-hn 43.080 104.140 SOURCE3 1 0.0000 -c -nh-n4 0.000 111.350 SOURCE3 1 cx-nh-cx 86.530 62.020 SOURCE4 45 0.6189 cx-nh-hn 45.790 118.890 SOURCE4 8 0.1391 cz-nh-hn 48.790 121.240 SOURCE4 40 0.5682 @@ -3783,7 +3739,6 @@ ho-oh-sh 54.390 106.240 SOURCE3 2 0.0661 ho-oh-ss 54.540 107.060 SOURCE3 4 0.9967 ho-oh-sy 55.940 106.410 SOURCE4 33 0.3729 -Si-oh-ho 52.570 115.710 SOURCE4 5 0.1738 br-os-br 65.080 110.630 SOURCE3 1 0.0000 c1-os-c1 66.990 115.020 SOURCE3 1 0.0000 c1-os-c3 64.470 113.390 SOURCE3 1 0.0000 @@ -3892,7 +3847,6 @@ s4-os-s4 99.450 111.630 SOURCE3 1 0.0000 s6-os-s6 103.740 119.070 SOURCE3 2 0.4318 sh-os-sh 97.950 118.950 SOURCE3 1 0.0000 -Si-os-c3 74.830 124.640 SOURCE4 9 0.2879 s -os-s 91.270 118.080 SOURCE3 1 0.0000 ss-os-ss 97.420 115.640 SOURCE3 1 0.0000 br-p2-br 65.020 108.600 SOURCE3 1 @@ -4615,7 +4569,6 @@ f -s4-f 43.790 92.710 SOURCE2 3 0.1490 f -s4-o 43.870 106.810 SOURCE2 2 0.0100 f -s4-s 47.340 107.500 SOURCE2 1 0.0000 -hn-s4-hs 0.000 86.990 SOURCE3 1 hs-s4-hs 23.650 87.000 SOURCE3 2 0.0202 hs-s4-n1 32.050 90.510 HF/6-31G* 1 hs-s4-o 31.160 110.270 SOURCE3 5 0.1908 @@ -4789,12 +4742,6 @@ hs-sh-s6 33.980 93.830 SOURCE3 3 1.2561 hs-sh-sh 33.890 99.070 SOURCE3 2 0.0000 hs-sh-ss 33.730 99.170 SOURCE3 3 0.2457 -c3-Si-c3 34.810 109.820 SOURCE4 88 0.5569 -c3-Si-ca 34.800 110.090 SOURCE4 26 0.7331 -c3-Si-oh 38.160 107.440 SOURCE4 8 1.5150 -c3-Si-os 38.140 108.750 SOURCE4 38 0.7301 -ha-Si-ha 19.530 108.770 SOURCE4 5 0.5372 -os-Si-os 42.630 108.350 SOURCE4 15 1.7995 br-ss-br 41.920 102.920 SOURCE3 1 0.0000 br-ss-c3 39.460 99.030 SOURCE3 1 0.0000 c1-ss-c1 41.480 98.300 SOURCE2 1 0.0000 @@ -4813,7 +4760,6 @@ c3-ss-cl 37.940 99.400 SOURCE2 1 0.0000 c3-ss-cy 38.750 94.320 SOURCE4 62 0.3646 c3-ss-f 39.670 97.490 SOURCE3 1 0.0000 -c3-ss-ha 0.000 96.500 SOURCE2 1 0.0000 c3-ss-i 35.060 100.000 SOURCE3 1 0.0000 c3-ss-n1 41.250 98.440 HF/6-31G* 1 c3-ss-n2 41.260 96.420 SOURCE3 5 1.3604 @@ -5883,7 +5829,7 @@ were replaced with those newly generated. Here are the numbers: Bond length: 59 low quality parameters were replaced and 56 new parameters -were introduced. $j +were introduced. Bond angle: 437 low quality parameters were replaced and 618 new parameters were introduced. --------------------------------------------------------------------------- Workarounds: none ********> bugfix 2 Author: Wei Zhang Date: 28 May 2010 Programs: sleap Description: Under some circumstances, the addions command can cause a segfault. Fix: Apply the following fix to amber11/AmberTools/src/gleap/mortsrc/capbox/addions.cpp --------------------------------------------------------------------------- --- AmberTools/src/gleap/mortsrc/capbox/addions.cpp +++ AmberTools/src/gleap/mortsrc/capbox/addions.cpp @@ -85,6 +85,7 @@ namespace mort { mort_ionee ionee(m); addions_core( ionee, ion, num_ion, shlext, resolution ); + m.cleanup(); } void addions_core( ionee_i& ionee, const molecule_t& ion, int num_ion, double shlext, double resolution ) --------------------------------------------------------------------------- Workarounds: none ********> bugfix 3 Author: Mengjuei Hsieh Date: 1 June 2010 Programs: tleap, xleap Description: LEaP has some strcpy() calls with overlapping memory, which leads to problems with Fedora Core x86_64, and maybe with Ubuntu 10.04. Fix: Apply the following fix in amber11/AmberTools/src/leap/src/leap --------------------------------------------------------------------------- --- AmberTools/src/leap/src/leap/basics.c +++ AmberTools/src/leap/src/leap/basics.c @@ -462,7 +462,7 @@ char *cPBlock; SmPMallocList = mPMem; sTrailer = ((char*)mPMem)+sizeof(MEMHEADER)+lSize; - memcpy( sTrailer, mPMem->sCheck, TRAILERLEN ); + memmove( sTrailer, mPMem->sCheck, TRAILERLEN ); return ((char*)mPMem) + sizeof(MEMHEADER); } @@ -528,7 +528,7 @@ char *sTrailer; if ( mPMem == NULL ) { DFATAL(( "Could not malloc in REALLOC: %s\n", strerror(errno) )); } - memcpy( mPMem, mPPrevious, + memmove( mPMem, mPPrevious, MIN( lSize, mPPrevious->lSize) + sizeof(MEMHEADER)+TRAILERLEN ); strcpy( mPPrevious->sCheck, FREESTR ); @@ -540,7 +540,8 @@ char *sTrailer; /* Fill the trailer */ sTrailer = ((char*)mPMem)+sizeof(MEMHEADER)+lSize; - strcpy( sTrailer, mPMem->sCheck ); + memmove( sTrailer, mPMem->sCheck, strlen(mPMem->sCheck) ); + sTrailer[strlen(mPMem->sCheck)]='\0'; return ((char*)mPMem) + sizeof(MEMHEADER); } --- AmberTools/src/leap/src/leap/database.c +++ AmberTools/src/leap/src/leap/database.c @@ -594,6 +594,7 @@ static char * sStripString( char *sLine, char *sStr ) { char c, *sCur, *sStart; +int mylength; sCur = sLine; sStart = sStr; @@ -615,8 +616,10 @@ char c, *sCur, *sStart; (*sStr++) = c; } while ( (*sCur) != '\0' ); *sStr = '\0'; - strcpy( sLine, sCur ); - + mylength=strlen(sCur); + //strcpy( sLine, sCur ); + memmove(sLine, sCur, mylength); + sLine[mylength]='\0'; return(sStart); } --- AmberTools/src/leap/src/leap/sort.c +++ AmberTools/src/leap/src/leap/sort.c @@ -217,9 +217,9 @@ int iTopTrue, iBottomFalse; /* If false then swap it with the bottom of the false */ /* group, and leave the current pointer where it is */ - memcpy( PSwapBuffer, PCur, iElementSize ); - memcpy( PCur, PTop, iElementSize ); - memcpy( PTop, PSwapBuffer, iElementSize ); + memmove( PSwapBuffer, PCur, iElementSize ); + memmove( PCur, PTop, iElementSize ); + memmove( PTop, PSwapBuffer, iElementSize ); PTop = (char*)PTop - iElementSize; iBottomFalse--; --- AmberTools/src/leap/src/leap/stringExtra.c +++ AmberTools/src/leap/src/leap/stringExtra.c @@ -130,10 +130,13 @@ char * sRemoveLeadingSpaces( char *sLine ) { char *sTemp; - +int mylength; sTemp = sLine; while ( (*sTemp==' ') && ( *sTemp!='\0' )) sTemp++; - strcpy( sLine, sTemp ); + mylength=strlen(sTemp); + //strcpy( sLine, sTemp ); + memmove(sLine, sTemp, mylength); + sLine[mylength]='\0'; return(sLine); } @@ -152,6 +155,7 @@ void sRemoveFirstString( char *sLine, char *sHead ) { char *sTemp; +int mylength; sTemp = sLine; while ( (*sTemp!=' ') && ( *sTemp!='\0' )) sTemp++; @@ -163,7 +167,11 @@ char *sTemp; *sTemp = '\0'; strcpy( sHead, sLine ); sTemp++; - strcpy( sLine, sTemp ); + mylength=strlen(sTemp); + //strcpy( sLine, sTemp ); + memmove(sLine, sTemp, mylength); + sLine[mylength]='\0'; + } --- AmberTools/src/leap/src/leap/xaCommand.c +++ AmberTools/src/leap/src/leap/xaCommand.c @@ -837,7 +837,7 @@ STRING sName; * at the top of the list */ qsort( saPNames, iNumber, sizeof(STRING), - (int (*) (void *, void *) )ziXACCompareTwoDirectoryEntries ); + (int (*) (const void *, const void *) )ziXACCompareTwoDirectoryEntries ); /* * Reformulate as an array of pointers to char --------------------------------------------------------------------------- Workarounds: none ********> bugfix 4 Author: Daniel R. Roe Date: 2010-05-27 Description: Fixes bug where ptraj actions would attempt to allocate a negative number of bytes of memory when the number of frames to be read is unknown, i.e. file is compressed or corrupted. The number of frames for compressed files can now be calculated ahead of time. For gzip files this is simple, but for bzip2 and zip files this adds to the processing time since uncompressed file size cannot be determined for these file types without external programs. For corrupted files the trajectory filesize is used to predict the number of frames. After applying the patch ptraj should be completely recompiled (i.e. perform a make clean in the ptraj directory). To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.4 ----------------------------------------------------------------------------- --- AmberTools/src/ptraj/trajectory.h 2010-03-30 23:05:16.000000000 -0400 +++ AmberTools/src/ptraj/trajectory.h 2010-05-27 11:16:27.928920475 -0400 @@ -168,6 +168,7 @@ char *filename; // File name int start; // Frame to start processing int stop; // Frame to end processing + int Nframes; // Total number of frames in the file. int offset; // # of frames to skip int append; // File will be appended to int isBox; // File has box information @@ -230,6 +231,7 @@ _p_->filename = NULL; \ _p_->start = 1; \ _p_->stop = -1; \ + _p_->Nframes = 0; \ _p_->offset = 1; \ _p_->append = 0; \ _p_->isBox = 0; \ --- AmberTools/src/ptraj/io.c 2010-03-30 23:05:16.000000000 -0400 +++ AmberTools/src/ptraj/io.c 2010-05-27 15:15:49.825241972 -0400 @@ -674,6 +674,91 @@ } /* DAN ROE: + * gzipFileSize() + * Return the uncompressed size in bytes of gzipped file by peeking at the + * last 4 bytes. + */ +int gzipFileSize(char *filename) { + FILE *infile; + int b1,b2,b3,b4,val; + + if (filename==NULL) return -1; + if ( (infile = fopen(filename,"rb"))==NULL ) { + fprintf(stdout,"Error: gzipFileSize: Could not open %s for reading.\n",filename); + return -1; + } + + // Place 4 bytes from the end + fseek(infile, -4, SEEK_END); + + b1=0; b2=0; b3=0; b4=0; + fread(&b4,1,1,infile); + fread(&b3,1,1,infile); + fread(&b2,1,1,infile); + fread(&b1,1,1,infile); + + val = (b1 << 24) | (b2 << 16) + (b3 << 8) + b4; + + fclose(infile); + + if (prnlev>0) fprintf(stdout,"gzipFileSize: Uncompressed size of %s: %i\n",filename,val); + + return val; +} +/* DAN ROE: + * bzip2FileSize() + * Return the uncompressed size of bzip2 file in bytes by counting all + * characters using bzcat and wc. + */ +int bzip2FileSize(char *filename) { + int val; + char *command; + FILE *pipe; + + if (filename==NULL) return -1; + // Use bzcat | wc -c to calc file size + command=(char*) malloc( (15 + strlen(filename)) * sizeof(char)); + sprintf(command,"bzcat %s | wc -c",filename); + if ((pipe=popen(command,"r"))==NULL) { + fprintf(stdout,"Error: bzip2FileSize: Could not open %s for reading.\n",filename); + fprintf(stdout," Check that bzcat and wc are present on your system.\n"); + return -1; + } + fscanf(pipe,"%i",&val); + pclose(pipe); + + if (prnlev>0) fprintf(stdout,"bzip2FileSize: Uncompressed size of %s: %i\n",filename,val); + + return val; +} +/* DAN ROE: + * zipFileSize() + * Return the uncompressed size of zip file in bytes by counting all + * characters using unzip and wc. + */ +int zipFileSize(char *filename) { + int val; + char *command; + FILE *pipe; + + if (filename==NULL) return -1; + // Use unzip -p | wc -c to calc file size + command=(char*) malloc( (18 + strlen(filename)) * sizeof(char)); + sprintf(command,"unzip -p %s | wc -c",filename); + if ((pipe=popen(command,"r"))==NULL) { + fprintf(stdout,"Error: zipFileSize: Could not open %s for reading.\n",filename); + fprintf(stdout," Check that unzip and wc are present on your system.\n"); + return -1; + } + fscanf(pipe,"%i",&val); + pclose(pipe); + + if (prnlev>0) fprintf(stdout,"zipFileSize: Uncompressed size of %s: %i\n",filename,val); + + return val; +} + +/* DAN ROE: * id_Filesig(): Attempt to identify the file type by first 3 hex vals. * A filename or an open stream should be supplied. * If a filename is supplied, the file is opened, checked, then closed. --- AmberTools/src/ptraj/io.h 2010-03-30 23:05:16.000000000 -0400 +++ AmberTools/src/ptraj/io.h 2010-05-27 15:16:16.839329069 -0400 @@ -76,6 +76,9 @@ extern void doSystem(char *); extern char * promptToOpenFile( FILE **, char *, char *, char *); +extern int gzipFileSize(char *); +extern int bzip2FileSize(char *); +extern int zipFileSize(char *); extern int id_Filesig(char *,FILE *); extern int openFile( FILE **, char *, char *); extern int promptUserResponse(FILE *, FILE *, char *, char *, int); @@ -94,6 +97,9 @@ extern void doSystem(); extern char * promptToOpenFile(); +extern int gzipFileSize(); +extern int bzip2FileSize(); +extern int zipFileSize(); extern int id_Filesig(); extern int openFile(); extern int promptUserResponse(); --- AmberTools/src/ptraj/ptraj.c 2010-04-23 10:17:17.000000000 -0400 +++ AmberTools/src/ptraj/ptraj.c 2010-05-27 15:16:27.913954807 -0400 @@ -2058,7 +2058,7 @@ int lines_per_set; int start = 1; int stop = 1; - int frame_lines, frame_size, title_size, seekable; + int frame_lines, frame_size, title_size, seekable, file_size; long int endoffset; float *binposScratch; FILE *fp; @@ -2414,12 +2414,25 @@ fprintf(stderr, "WARNING in %s: Could not find file status for %s\n", ROUTINE, filename); return NULL; } + + // Determine Uncompressed File Size for Nframes calculation + file_size=0; + if (trajInfo->compressType==1) // Gzip + file_size=gzipFileSize(filename); + else if (trajInfo->compressType==2) // Bzip2 + file_size=bzip2FileSize(filename); + else if (trajInfo->compressType==3) // Zip + file_size=zipFileSize(filename); + if (file_size<0) return NULL; + if (file_size==0) file_size=frame_stat.st_size; + if (prnlev>0) fprintf(stdout,"[%i] Title offset %u Frame Size %u File size %lu\n", - worldrank,trajInfo->titleSize,trajInfo->frameSize,frame_stat.st_size); - if (((frame_stat.st_size - trajInfo->titleSize) % (trajInfo->frameSize)) == 0) { + worldrank,trajInfo->titleSize,trajInfo->frameSize,file_size); + trajInfo->Nframes = (int) ((file_size - trajInfo->titleSize) / trajInfo->frameSize); + if (((file_size - trajInfo->titleSize) % (trajInfo->frameSize)) == 0) { seekable = 1; - stop = (int) ((frame_stat.st_size - trajInfo->titleSize) / trajInfo->frameSize); + stop = trajInfo->Nframes; } else { stop = -1; seekable = 0; @@ -2538,7 +2551,8 @@ printfone(" With this version of the code, this will likely lead to program failure!!!\n"); } - + // Set number of frames. Amber trajectory sets Nframes above + if (trajInfo->Nframes==0 && stop>0) trajInfo->Nframes=stop; trajInfo->start = start; trajInfo->stop = stop; trajInfo->offset = 1; @@ -4182,7 +4196,7 @@ fprintf(stderr,"Could not get replica temperature from file# %i\n",i); break; } - fprintf(stdout," Replica %i mytemp=%lf ",i,repTemp); //DEBUG + if (prnlev>0) fprintf(stdout," Replica %i mytemp=%lf ",i,repTemp); //DEBUG if (repTemp==currentCoordinateInfo->remdtrajtemp) { if (prnlev>0) fprintf(stdout, " REMD target temperature (%lf) found (%lf) at replica index %i\n", @@ -7078,6 +7092,7 @@ stackType *sp, *argumentStack; ptrajState *startingState, *currentState, **statep; char *continuation; + int totalFrames; int readCoordinates; int processCoordinates; @@ -7218,18 +7233,25 @@ */ startingState->maxFrames = 0; + totalFrames=0; for (sp = transformFileStack; sp != NULL; sp = sp->next) { currentCoordinateInfo = (coordinateInfo *) sp->entry; + fprintf(stdout," %s: %i frames.\n",currentCoordinateInfo->filename,currentCoordinateInfo->Nframes); + startingState->maxFrames += (currentCoordinateInfo->stop - currentCoordinateInfo->start) / currentCoordinateInfo->offset + 1; + // In case we dont know how many frames will be processed, use total number of frames + totalFrames += currentCoordinateInfo->Nframes; } printfone("\nPTRAJ: Successfully read the input file.\n"); - if (startingState->maxFrames == -1) + if (startingState->maxFrames == -1) { printfone(" Coordinate processing will occur until EOF (unknown number of frames).\n"); - else + // Use total frames for action memory alloc. + startingState->maxFrames = totalFrames; + } else printfone(" Coordinate processing will occur on %i frames.\n", startingState->maxFrames); printfone(" Summary of I/O and actions follows:\n\n"); ********> bugfix 5 Author: Tyler Luchko Date: 2010/06/25 Programs: NAB Description: Fixes long range asymptotics for ionic solvents (e.g. NaCl in water) in 3D-RISM. This does not affect calculations with pure water or other neutral solvent species. NAB tests are updated and added are included. Also improves memory handling for the Intel compiler. System size is no longer limited by the system stack size. To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.5 --------------------------------------------------------------------------- diff --git AmberTools/src/rism/amber_rism_interface.f AmberTools/src/rism/amber_rism_interface.f index 6847542..52feef9 100644 --- AmberTools/src/rism/amber_rism_interface.f +++ AmberTools/src/rism/amber_rism_interface.f @@ -501,7 +501,8 @@ subroutine rism_force (ratu_md,frc, epol, irespa) call timer_stop(TIME_REORIENT) !linproj predict call timer_start(TIME_CRDINTERP) - call fce_force(fce_o,ff,rism_3d%solu%ratu) + if(rismprm%apply_rism_force==1)& + call fce_force(fce_o,ff,rism_3d%solu%ratu) call timer_stop(TIME_CRDINTERP) call timer_start(TIME_REORIENT) @@ -537,16 +538,17 @@ subroutine rism_force (ratu_md,frc, epol, irespa) end if #else /*SANDER*/ #endif /*SANDER*/ - call rism3d_force(rism_3d,ff) - if(rismprm%zerofrc==1)then + if(rismprm%apply_rism_force==1)then + call rism3d_force(rism_3d,ff) + if(rismprm%zerofrc==1)then #ifdef MPI - call corr_drift(ff,rism_3d%solu%mass,rism_3d%solu%natom,& - mpirank,mpisize,mpicomm) + call corr_drift(ff,rism_3d%solu%mass,rism_3d%solu%natom,& + mpirank,mpisize,mpicomm) #else - call corr_drift(ff,rism_3d%solu%mass,rism_3d%solu%natom) + call corr_drift(ff,rism_3d%solu%mass,rism_3d%solu%natom) #endif /*MPI*/ + end if end if - !get the excess chemical potential call timer_start(TIME_EXCHEM) if(rismprm%gauss_fluct == 0)then @@ -563,12 +565,12 @@ subroutine rism_force (ratu_md,frc, epol, irespa) #endif /*defined(MPI)*/ end if call timer_stop(TIME_EXCHEM) - + #ifdef RISM_CRDINTERP call timer_start(TIME_REORIENT) call orient(rism_3d,ff,qback) call timer_stop(TIME_REORIENT) - if(rismprm%fcestride >0)then + if(rismprm%fcestride >0 .and. rismprm%apply_rism_force==1)then call timer_start(TIME_SAVECRDINTERP) call fce_update(fce_o,ff,rism_3d%solu%ratu) call timer_stop(TIME_SAVECRDINTERP) @@ -586,7 +588,6 @@ subroutine rism_force (ratu_md,frc, epol, irespa) end if if(rismprm%apply_rism_force==1) frc = frc+ff - call flush(6) return end subroutine rism_force @@ -1087,6 +1088,7 @@ end subroutine rism_writeSolvDistC subroutine rism_writeSolvDistF(this,step) use amber_rism_interface use rism3d_opendx + use safemem implicit none #if defined(MPI) include 'mpif.h' @@ -1097,9 +1099,18 @@ subroutine rism_writeSolvDistF(this,step) character(len=16) :: cstep character(len=64) :: suffix integer :: unit = 99,iostat=0 +#ifdef MPI + integer :: err + _REAL_, pointer::work(:,:,:)=>NULL() +#endif /*MPI*/ #ifdef RISM_DEBUG write(6,*) "printrism" #endif +#ifdef MPI + if(len_trim(guvfile) /= 0 .or. len_trim(huvfile) /= 0)then + work => reallocate_pointer(work, this%ng3(1), this%ng3(2), this%nz_local) + end if +#endif /*MPI*/ !................... outputting Guv and Cuv profiles ................... do iv=1,this%solv%natom write(cstep,'(i16)') step @@ -1112,9 +1123,15 @@ subroutine rism_writeSolvDistF(this,step) call mexit(6,1) end if # if defined(MPI) + do k=1,this%nz_local + do j=1,this%ng3(2) + do i=1,this%ng3(1) + work(i,j,k) = this%guv(i+(j-1)*(this%ng3(1)+2)+(k-1)*(this%ng3(1)+2)*this%ng3(2),iv) + end do + end do + end do call writeDX(unit,& - (/(((this%guv(i+(j-1)*(this%ng3(1)+2)+(k-1)*(this%ng3(1)+2)*this%ng3(2),iv)& - ,i=1,this%ng3(1)),j=1,this%ng3(2)),k=1,this%nz_local)/),& + work,& this%boxlen,this%ng3_local,this%ng3(3),this%ratucm,& mpirank,mpisize,mpicomm) # else @@ -1131,9 +1148,16 @@ subroutine rism_writeSolvDistF(this,step) call mexit(6,1) end if # if defined(MPI) + + do k=1,this%nz_local + do j=1,this%ng3(2) + do i=1,this%ng3(1) + work(i,j,k) =this%huv(i+(j-1)*(this%ng3(1)+2)+(k-1)*(this%ng3(1)+2)*this%ng3(2),iv) + end do + end do + end do call writeDX(unit,& - (/(((this%huv(i+(j-1)*(this%ng3(1)+2)+(k-1)*(this%ng3(1)+2)*this%ng3(2),iv)& - ,i=1,this%ng3(1)),j=1,this%ng3(2)),k=1,this%nz_local)/),& + work,& this%boxlen,this%ng3_local,this%ng3(3),this%ratucm,& mpirank,mpisize,mpicomm) # else @@ -1160,6 +1184,9 @@ subroutine rism_writeSolvDistF(this,step) if(mpirank==0)close(unit) endif end do +#ifdef MPI + err = safe_deallocate(work) +#endif /*MPI*/ end subroutine rism_writeSolvDistF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git AmberTools/src/rism/rism3d_c.f AmberTools/src/rism/rism3d_c.f index af51a25..ae60567 100644 --- AmberTools/src/rism/rism3d_c.f +++ AmberTools/src/rism/rism3d_c.f @@ -911,7 +911,7 @@ module rism3d_c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine rism3d_aexchem_sp (this,xmu0,xmu0sp,egf) use constants, only : PI,KB,AMBER_ELECTROSTATIC2 - use rism_util, only : gaussquad_legendre + use rism_util, only : gaussquad_legendre, checksum implicit none #if defined(MPI) include 'mpif.h' @@ -947,132 +947,130 @@ module rism3d_c call flush(6) #endif /*RISM_DEBUG*/ + !.....total charge of solute + qut = sum(this%solu%charge) !.....getting the numerical long-range contribution egf = 0 - eqkt = AMBER_ELECTROSTATIC2/KB/this%solv%temperature - - Nintmx = 200 - if(Nintmx > ntvlmx)then - write(6,'(1X,"Nintmx gt ntvlmx",I10)')ntvlmx - call mexit(6,1) - endif - - !.....initialize gauss-legendre integration - call gaussquad_legendre (0d0,1d0,argum,weight,Nintmx) - sumhc = 0.d0 - sumh2 = 0.d0 - - !.....k loop - do ik = 1, Nintmx - - k = argum(ik)/(1.d0-argum(ik)) - - !.....Bessel part - sumb = 0.d0 - - do i=2,this%solu%natom - do j=1,i-1 - - !......... site separation .......... - dx = this%solu%ratu(1,i) - this%solu%ratu(1,j) - dy = this%solu%ratu(2,i) - this%solu%ratu(2,j) - dz = this%solu%ratu(3,i) - this%solu%ratu(3,j) - - r2 = dx*dx + dy*dy + dz*dz - - xarg = this%solv%xappa*k*sqrt(r2) - if(xarg == 0.d0) & - sumb = sumb + 1.d0*this%solu%charge(i)*this%solu%charge(j) - if(xarg /= 0.d0) & - sumb = sumb + sin(xarg)/xarg *this%solu%charge(i)*this%solu%charge(j) + if(this%mpirank==0)then + eqkt = AMBER_ELECTROSTATIC2/KB/this%solv%temperature + Nintmx = 200 + if(Nintmx > ntvlmx)then + write(6,'(1X,"Nintmx gt ntvlmx",I10)')ntvlmx + call mexit(6,1) + endif + + !.....initialize gauss-legendre integration + call gaussquad_legendre (0d0,1d0,argum,weight,Nintmx) + sumhc = 0.d0 + sumh2 = 0.d0 + + !.....k loop + do ik = 1, Nintmx + + k = argum(ik)/(1.d0-argum(ik)) + + !.....Bessel part + sumb = 0.d0 + + do i=2,this%solu%natom + do j=1,i-1 + + !......... site separation .......... + dx = this%solu%ratu(1,i) - this%solu%ratu(1,j) + dy = this%solu%ratu(2,i) - this%solu%ratu(2,j) + dz = this%solu%ratu(3,i) - this%solu%ratu(3,j) + + r2 = dx*dx + dy*dy + dz*dz + + xarg = this%solv%xappa*k*sqrt(r2) + if(xarg == 0.d0) & + sumb = sumb + 1.d0*this%solu%charge(i)*this%solu%charge(j) + if(xarg /= 0.d0) & + sumb = sumb + sin(xarg)/xarg *this%solu%charge(i)*this%solu%charge(j) + + enddo enddo + + sumb = sumb*2.d0 + + do i=1,this%solu%natom + sumb = sumb + 1.d0*this%solu%charge(i)*this%solu%charge(i) + enddo + + !.....end of Bessel part + + x2arg = (k*this%solv%xappa*this%solv%smear)**2 + k2 = k**2 + + denom = argum(ik)**2+(1.0d0-argum(ik))**2 + + sumhc = sumhc + & + exp(-x2arg/2.d0)/denom*sumb*weight(ik) + sumh2 = sumh2 + & + exp(-x2arg/2.d0)*argum(ik)**2/(denom**2)*sumb*weight(ik) + enddo - - sumb = sumb*2.d0 - - do i=1,this%solu%natom - sumb = sumb + 1.d0*this%solu%charge(i)*this%solu%charge(i) - enddo - - !.....end of Bessel part - - x2arg = (k*this%solv%xappa*this%solv%smear)**2 - k2 = k**2 - - denom = argum(ik)**2+(1.0d0-argum(ik))**2 - - sumhc = sumhc + & - exp(-x2arg/2.d0)/denom*sumb*weight(ik) - sumh2 = sumh2 + & - exp(-x2arg/2.d0)*argum(ik)**2/(denom**2)*sumb*weight(ik) - - enddo - - !.....end of k-loop - - !.....total charge of solute - qut = 0.d0 - do i = 1,this%solu%natom - qut = qut + this%solu%charge(i) - enddo - !.....site xappa - if (this%closure == KH) then + + !.....end of k-loop + + !.....site xappa + if (this%closure == KH) then + do iv = 1,this%solv%natom + if(qut*this%solv%charge_sp(iv) <= 0.d0) & + xmuh2lr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge_sp(iv)**2 + if(qut*this%solv%charge_sp(iv) > 0.d0) & + xmuh2lr(iv) = 0.d0 + xmuhclr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge(iv)*this%solv%charge_sp(iv) + enddo + else + do iv = 1,this%solv%natom + xmuh2lr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge_sp(iv)**2 + xmuhclr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge(iv)*this%solv%charge_sp(iv) + enddo + endif + + !.....unit for xappa do iv = 1,this%solv%natom - if(qut*this%solv%charge_sp(iv) <= 0.d0) & - xmuh2lr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge_sp(iv)**2 - if(qut*this%solv%charge_sp(iv) > 0.d0) & - xmuh2lr(iv) = 0.d0 - xmuhclr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge(iv)*this%solv%charge_sp(iv) + xmuh2lr(iv) = xmuh2lr(iv) * eqkt + xmuhclr(iv) = xmuhclr(iv) * eqkt enddo - else + + !.....divided by total xappa + if(this%solv%xappa /= 0.d0)then + do iv = 1,this%solv%natom + xmuh2lr(iv) = xmuh2lr(iv) / this%solv%xappa + xmuhclr(iv) = xmuhclr(iv) / this%solv%xappa + enddo + else + do iv = 1,this%solv%natom + xmuh2lr(iv) = 0.d0 + xmuhclr(iv) = 0.d0 + enddo + endif + + !.....multiplying xmulr by integral do iv = 1,this%solv%natom - xmuh2lr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge_sp(iv)**2 - xmuhclr(iv) = 4.d0*PI/(this%solv%dielconst) * this%solv%rho(iv)*this%solv%charge(iv)*this%solv%charge_sp(iv) + xmuh2lr(iv) = xmuh2lr(iv)*sumh2 + xmuhclr(iv) = - xmuhclr(iv)*sumhc enddo - endif - - !.....unit for xappa - do iv = 1,this%solv%natom - xmuh2lr(iv) = xmuh2lr(iv) * eqkt - xmuhclr(iv) = xmuhclr(iv) * eqkt - enddo - - !.....divided by total xappa - if(this%solv%xappa /= 0.d0)then + + sumh2 = 0.d0 + sumhc = 0.d0 do iv = 1,this%solv%natom - xmuh2lr(iv) = xmuh2lr(iv) / this%solv%xappa - xmuhclr(iv) = xmuhclr(iv) / this%solv%xappa + sumh2 = sumh2 + xmuh2lr(iv) + sumhc = sumhc + xmuhclr(iv) enddo - else + + !.....J devided by KT + sumh2 = sumh2 / (PI*this%solv%dielconst) * eqkt + sumhc = sumhc / PI * eqkt do iv = 1,this%solv%natom - xmuh2lr(iv) = 0.d0 - xmuhclr(iv) = 0.d0 + xmuh2lr(iv) = xmuh2lr(iv) / (PI*this%solv%dielconst) * eqkt + xmuhclr(iv) = xmuhclr(iv) / PI * eqkt enddo - endif - - !.....multiplying xmulr by integral - do iv = 1,this%solv%natom - xmuh2lr(iv) = xmuh2lr(iv)*sumh2 - xmuhclr(iv) = - xmuhclr(iv)*sumhc - enddo - - sumh2 = 0.d0 - sumhc = 0.d0 - do iv = 1,this%solv%natom - sumh2 = sumh2 + xmuh2lr(iv) - sumhc = sumhc + xmuhclr(iv) - enddo - - !.....J devided by KT - sumh2 = sumh2 / (PI*this%solv%dielconst) * eqkt - sumhc = sumhc / PI * eqkt - do iv = 1,this%solv%natom - xmuh2lr(iv) = xmuh2lr(iv) / (PI*this%solv%dielconst) * eqkt - xmuhclr(iv) = xmuhclr(iv) / PI * eqkt - enddo - xmulr = sumh2 + sumhc - + xmulr = sumh2 + sumhc + end if !.................. calculating xMu0 by PLHNC closure .................. if (this%closure == KH) then dxmu = 0.d0 @@ -1232,13 +1230,20 @@ module rism3d_c xmu0sp(iv) = xmu0sp(iv) * (this%boxvol/this%ngr) enddo - !.....add long-range part - xmu0 = xmu0 + (xmulr) - egf = egf + (xmulr) - do iv=1,this%solv%natom - xmu0sp(iv) = xmu0sp(iv) + xmuh2lr(iv) + xmuhclr(iv) - enddo - + !.....add long-range part but only on the master process so we don't over count + !.....this contribution. +!!$ write(0,*) "pre lr", this%mpirank, xmu0 +!!$ write(0,*) checksum(this%huv,product(shape(this%huv)),this%mpicomm), & +!!$ checksum(this%cuv,product(shape(this%cuv)),this%mpicomm), & +!!$ checksum(this%uuv,product(shape(this%uuv)),this%mpicomm) + if(this%mpirank==0)then + xmu0 = xmu0 + (xmulr) + egf = egf + (xmulr) + do iv=1,this%solv%natom + xmu0sp(iv) = xmu0sp(iv) + xmuh2lr(iv) + xmuhclr(iv) + enddo + end if +!!$ write(0,*) "post lr", this%mpirank, xmu0 return end subroutine rism3d_aexchem_sp @@ -2322,6 +2327,7 @@ end subroutine reallocbox subroutine asympch(this,huvk0) use constants, only : PI, FOURPI,& AMBER_ELECTROSTATIC2,KB + use rism_util, only : checksum implicit none #if defined(MPI) include 'mpif.h' @@ -2339,9 +2345,7 @@ end subroutine reallocbox _REAL_ :: xappa2,smear2_4 _REAL_ :: asymhr_coeff _REAL_,save :: asymhr_coeff_at_cut=0,asymcr_coeff_at_cut=0 - _REAL_,save :: erfcAtCut=0,erfcAtNegCut=0,cut=15.5d0 -!! _REAL_,save :: erfcAtCut=0,erfcAtNegCut=0,cut=999d0 -! !linear spacing of the grid + _REAL_,save :: erfcAtCut=0,erfcAtNegCut=0,cut=4d0,maxcut !offset :: z-axis offset (important for spatially distributed MPI) _REAL_ :: offset ! !number of gridpoints in each direction to use @@ -2351,7 +2355,7 @@ end subroutine reallocbox _REAL_ :: erfc external erfc integer :: irank,ierr,i - _REAL_:: checksum,mpitmp + _REAL_:: mpitmp half_smear_root_pi=sqrt(PI)*this%solv%smear/2d0 half_xappa_smear=this%solv%xappa*this%solv%smear/2d0 @@ -2361,7 +2365,9 @@ end subroutine reallocbox asymhr_coeff=exp(-(this%solv%xappa**2)*(this%solv%smear**2)/4d0)* & (2d0*exp(-(this%solv%smear*this%solv%xappa/2d0)**2)/(sqrt(PI)*this%solv%smear) & - this%solv%xappa * erfc(this%solv%xappa*this%solv%smear/2d0)) - do while(exp(-quarter_xappa2_smear2)-asymhr_coeff_at_cut > 1d-7 .and. 1d0-asymcr_coeff_at_cut > 1d-7) + maxcut = sqrt(sum(this%boxlen**2)) + do while((exp(-quarter_xappa2_smear2)-asymhr_coeff_at_cut > 1d-7 .or. 1d0-asymcr_coeff_at_cut > 1d-7)& + .and. cut < maxcut) erfcAtCut = erfc(cut) erfcAtNegCut = erfc(-cut) asymhr_coeff_at_cut=exp(-quarter_xappa2_smear2) & @@ -2370,10 +2376,10 @@ end subroutine reallocbox !(erfcAtNegCut - erfcAtCut)/2d0 asymcr_coeff_at_cut=(1d0-erfc(cut/this%solv%smear)) cut = cut+.1d0 - ! write(6,*)'cut coeff',asymhr_coeff_at_cut,asymcr_coeff_at_cut +! write(0,*)'cut coeff',this%mpirank,asymhr_coeff_at_cut,asymcr_coeff_at_cut end do #ifdef RISM_DEBUG - write(6,*)'cut coeff',cut,asymhr_coeff_at_cut,asymcr_coeff_at_cut + write(0,*)'cut coeff',cut,exp(-quarter_xappa2_smear2)-asymhr_coeff_at_cut,asymcr_coeff_at_cut #endif /*RISM_DEBUG*/ !.....initialize this%asymcr=0d0 @@ -2569,7 +2575,7 @@ end subroutine reallocbox this%asymcr = this%asymcr * factor this%asymhr = this%asymhr * factor this%asymck = this%asymck * (factor / this%boxvol) - this%asymhk = this%asymhk * (factor / this%boxvol)/2d0/PI**2 + this%asymhk = this%asymhk * (factor / this%boxvol) !?WHY IS THIS ONLY FOR ny_start==0?! if(this%ny_start==0)then @@ -2591,35 +2597,22 @@ end subroutine reallocbox end if #ifdef RISM_DEBUG # ifdef MPI - checksum = sum(this%asymck) -# ifdef USE_MPI_IN_PLACE - call mpi_allreduce(MPI_IN_PLACE,checksum,1,MPI_DOUBLE_PRECISION,mpi_sum,this%mpicomm,ierr) -# else - call mpi_allreduce(checksum,mpitmp,1,MPI_DOUBLE_PRECISION,mpi_sum,this%mpicomm,ierr) - checksum = mpitmp -# endif /*USE_MPI_IN_PLACE*/ - if(this%mpirank == 0)then - write(6,*) "SUM this%asymck", this%mpirank, checksum - call flush(6) - end if - checksum = sum(this%asymhk) -# ifdef USE_MPI_IN_PLACE - call mpi_allreduce(MPI_IN_PLACE,checksum,1,MPI_DOUBLE_PRECISION,mpi_sum,this%mpicomm,ierr) -# else - call mpi_allreduce(checksum,mpitmp,1,MPI_DOUBLE_PRECISION,mpi_sum,this%mpicomm,ierr) - checksum = mpitmp -# endif /*USE_MPI_IN_PLACE*/ - if(this%mpirank == 0)then - write(6,*) "SUM this%asymhk", this%mpirank, checksum + write(6,*) "SUM this%asymhr", this%mpirank, & + checksum(this%asymhr,product(shape(this%asymhr)), this%mpicomm), sum(this%asymhr) + write(6,*) "SUM this%asymcr", this%mpirank, & + checksum(this%asymcr,product(shape(this%asymcr)), this%mpicomm), sum(this%asymcr) call flush(6) - end if # else - write(6,*)"SUM this%asymcr ",size(this%asymcr),sum(this%asymcr),& - sum(this%asymcr(1:this%ngr_local/2)),sum(this%asymcr(this%ngr_local/2+1:this%ngr_local)) - write(6,*)"SUM this%asymhr ",size(this%asymhr),sum(this%asymhr),& - sum(this%asymhr(1:this%ngr_local/2)),sum(this%asymhr(this%ngr_local/2+1:this%ngr_local)) + write(6,*) cut, asymhr_coeff_at_cut, asymcr_coeff_at_cut + write(6,*)"SUM this%asymcr ",size(this%asymcr),sum(this%asymcr),& + sum(this%asymcr(1:this%ngr_local/2)),sum(this%asymcr(this%ngr_local/2+1:this%ngr_local)) + write(6,*)"SUM this%asymhr ",size(this%asymhr),sum(this%asymhr),& + sum(this%asymhr(1:this%ngr_local/2)),sum(this%asymhr(this%ngr_local/2+1:this%ngr_local)) + stop +# endif /*MPI */ #endif /*RISM_DEBUG*/ #ifdef RISM_DEBUG +# ifdef MPI write(6,*) "RANK",this%mpirank,factor,this%boxvol write(6,'(a,i4,f15.10,f15.10)') "SUM this%asymck",this%ngk,sum(this%asymck),sum(this%asymck(3:)) write(6,'(a,i4,f15.10,f15.10)') "SUM this%asymhk",this%ngk,sum(this%asymhk),sum(this%asymhk(3:)) diff --git AmberTools/src/rism/rism3d_opendx.f AmberTools/src/rism/rism3d_opendx.f index c2f6dca..97a22f6 100644 --- AmberTools/src/rism/rism3d_opendx.f +++ AmberTools/src/rism/rism3d_opendx.f @@ -55,28 +55,37 @@ module rism3d_opendx contains subroutine writeDX (unit, data, rism_box, n,nz_total,ratucm & #ifdef MPI - ,rank,size,comm & + ,rank,nproc,comm & #endif /*MPI*/ ) + use safemem implicit none #if defined(MPI) include 'mpif.h' - integer, intent(in) :: rank,size,comm + integer, intent(in) :: rank,nproc,comm #else - integer,parameter :: rank = 0, size=1 + integer,parameter :: rank = 0, nproc=1 #endif /*defined(MPI)*/ integer, intent(in) :: nz_total integer,intent(in) :: unit, n(3) _REAL_,intent(in) :: data(n(1),n(2),n(3)), rism_box(3),ratucm(3) integer :: i,j,k, irank, ierr,count,icount - integer :: nz_offset(size),nz_local(size) + integer :: nz_offset(nproc),nz_local(nproc) integer, parameter :: dataperline=3 - _REAL_ :: z_data(nz_total) +#ifdef MPI + integer :: err + _REAL_,pointer :: z_data(:)=>NULL() +#endif /*MPI*/ #ifdef RISM_DEBUG + write(6,*) "writeDX",rism_box,ratucm call flush(6) #endif /*RISM_DEBUG*/ - +!!$ do i = 1,nproc +!!$ if(rank==i)& +!!$ write(0,*) "DX",rank,sum(data)/(rank+1),n(3) +!!$ call mpi_barrier(comm,ierr) +!!$ end do if(rank==0)then write(unit,"(a,i8,i8,i8)") "object 1 class gridpositions counts",n(1),n(2),nz_total write(unit,"(a,3(f15.8))") "origin ",ratucm(1)-rism_box(1)/2,ratucm(2)-rism_box(2)/2,ratucm(3)-rism_box(3)/2 @@ -89,9 +98,14 @@ contains end if count = 0 #if defined(MPI) + z_data =>reallocate_pointer(z_data,nz_total) call mpi_gather(n(3),1,mpi_integer,nz_local,1,mpi_integer,0,comm,ierr) nz_offset(1) = 0 - nz_offset(2:) = nz_local(1:size-1) + do i = 2, nproc + nz_offset(i) =sum( nz_local(1:i-1)) + end do +!!$ if(rank==0)& +!!$ write(0,*) "NZ",rank,nz_offset, nz_local #endif /*defined(MPI)*/ do i=1,n(1) do j=1,n(2) @@ -122,5 +136,8 @@ contains end if write(unit,"(a)") 'object "Untitled" call field' end if +#ifdef MPI + err = safe_deallocate(z_data) +#endif /*MPI*/ end subroutine writeDX end module rism3d_opendx diff --git AmberTools/src/rism/rism_fft.f AmberTools/src/rism/rism_fft.f index 75ef461..72779e3 100644 --- AmberTools/src/rism/rism_fft.f +++ AmberTools/src/rism/rism_fft.f @@ -205,19 +205,23 @@ contains ! Normalizing while Forward FFT (KEY=1) * !*********************************************************************** subroutine rlft3i (data, ng3, key,n_local,plan) + use safemem implicit none integer :: ng3(3), key integer :: n_local integer*8,intent(in) :: plan - _REAL_ :: data((ng3(1)+2)*ng3(2)*n_local) - _REAL_ :: work((ng3(1)+2)*ng3(2)*n_local) +! _REAL_ :: data((ng3(1)+2)*ng3(2)*n_local) +! _REAL_ :: work((ng3(1)+2)*ng3(2)*n_local) + _REAL_ :: data(:) + _REAL_,pointer :: work(:) integer :: ngr, ngr_local,ngk_local, ig, ierr integer, parameter :: FFTW_TRANSPOSED_ORDER=1, FFTW_NORMAL_ORDER=0 !....................... R-space data array size ....................... # ifdef RISM_DEBUG - write(6,*) "rlft3i",n_local - call flush(6) + write(0,*) "rlft3i",n_local + call flush(0) # endif /*RISM_DEBUG*/ + work=>reallocate_pointer(work,size(data)) ngr = ng3(1)*ng3(2)*ng3(3) ngr_local = ng3(1)*ng3(2)*n_local ngk_local = (ng3(1)+2)*ng3(2)*n_local @@ -230,6 +234,7 @@ contains call rfftwnd_f77_mpi( plan,1,data,work,1, & FFTW_TRANSPOSED_ORDER) end if + ierr = safe_deallocate(work) end subroutine rlft3i #else /*defined(MPI)*/ diff --git AmberTools/test/nab/Makefile AmberTools/test/nab/Makefile index 2c8ba0f..225aa66 100644 --- AmberTools/test/nab/Makefile +++ AmberTools/test/nab/Makefile @@ -12,7 +12,7 @@ testlibrism: duplex_test deform_test reflexive_test hashed_test shifts_test \ rattle_md_test rembed_test dhfrndpmtx_test asp_test \ aspnb_test prm_test cif_test xmin_test \ lmod_test nmode1_test nmode2_test nmode3_test ips_test \ - pbsa_test rism_test rism_md_test rism_dist rism_hnc + pbsa_test rism_test rism_md_test rism_dist rism_hnc rism_ion duplex_test:: @./Run.duplex @@ -112,3 +112,6 @@ rism_hnc:: rism_dist:: @./Run.rism_dist + +rism_ion:: + @sh ./Run.rism_ion diff --git AmberTools/test/nab/Na+.parm7 AmberTools/test/nab/Na+.parm7 new file mode 100644 index 0000000..f7b5a1f --- /dev/null +++ AmberTools/test/nab/Na+.parm7 @@ -0,0 +1,124 @@ +%VERSION VERSION_STAMP = V0001.000 DATE = 06/20/07 15:21:17 +%FLAG TITLE +%FORMAT(20a4) + +%FLAG POINTERS +%FORMAT(10I8) + 1 1 0 0 0 0 0 0 0 0 + 1 1 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 1 0 + 0 +%FLAG ATOM_NAME +%FORMAT(20a4) +Na+ +%FLAG CHARGE +%FORMAT(5E16.8) + 1.82223000E+01 +%FLAG MASS +%FORMAT(5E16.8) + 2.29900000E+01 +%FLAG ATOM_TYPE_INDEX +%FORMAT(10I8) + 1 +%FLAG NUMBER_EXCLUDED_ATOMS +%FORMAT(10I8) + 1 +%FLAG NONBONDED_PARM_INDEX +%FORMAT(10I8) + 1 +%FLAG RESIDUE_LABEL +%FORMAT(20a4) +Na+ +%FLAG RESIDUE_POINTER +%FORMAT(10I8) + 1 +%FLAG BOND_FORCE_CONSTANT +%FORMAT(5E16.8) + +%FLAG BOND_EQUIL_VALUE +%FORMAT(5E16.8) + +%FLAG ANGLE_FORCE_CONSTANT +%FORMAT(5E16.8) + +%FLAG ANGLE_EQUIL_VALUE +%FORMAT(5E16.8) + +%FLAG DIHEDRAL_FORCE_CONSTANT +%FORMAT(5E16.8) + +%FLAG DIHEDRAL_PERIODICITY +%FORMAT(5E16.8) + +%FLAG DIHEDRAL_PHASE +%FORMAT(5E16.8) + +%FLAG SOLTY +%FORMAT(5E16.8) + 0.00000000E+00 +%FLAG LENNARD_JONES_ACOEF +%FORMAT(5E16.8) + 2.04815198E+04 +%FLAG LENNARD_JONES_BCOEF +%FORMAT(5E16.8) + 1.50643699E+01 +%FLAG BONDS_INC_HYDROGEN +%FORMAT(10I8) + +%FLAG BONDS_WITHOUT_HYDROGEN +%FORMAT(10I8) + +%FLAG ANGLES_INC_HYDROGEN +%FORMAT(10I8) + +%FLAG ANGLES_WITHOUT_HYDROGEN +%FORMAT(10I8) + +%FLAG DIHEDRALS_INC_HYDROGEN +%FORMAT(10I8) + +%FLAG DIHEDRALS_WITHOUT_HYDROGEN +%FORMAT(10I8) + +%FLAG EXCLUDED_ATOMS_LIST +%FORMAT(10I8) + 0 +%FLAG HBOND_ACOEF +%FORMAT(5E16.8) + +%FLAG HBOND_BCOEF +%FORMAT(5E16.8) + +%FLAG HBCUT +%FORMAT(5E16.8) + +%FLAG AMBER_ATOM_TYPE +%FORMAT(20a4) +IP +%FLAG TREE_CHAIN_CLASSIFICATION +%FORMAT(20a4) +M +%FLAG JOIN_ARRAY +%FORMAT(10I8) + 0 +%FLAG IROTAT +%FORMAT(10I8) + 0 +%FLAG SOLVENT_POINTERS +%FORMAT(3I8) + 1 1 2 +%FLAG ATOMS_PER_MOLECULE +%FORMAT(10I8) + 1 +%FLAG BOX_DIMENSIONS +%FORMAT(5E16.8) + 9.00000000E+01 2.56000000E+01 2.56000000E+01 2.56000000E+01 +%FLAG RADIUS_SET +%FORMAT(1a80) +modified Bondi radii (mbondi) +%FLAG RADII +%FORMAT(5E16.8) + 1.50000000E+00 +%FLAG SCREEN +%FORMAT(5E16.8) + 8.00000000E-01 diff --git AmberTools/test/nab/Na+.pdb AmberTools/test/nab/Na+.pdb new file mode 100644 index 0000000..bb701f8 --- /dev/null +++ AmberTools/test/nab/Na+.pdb @@ -0,0 +1,4 @@ +REMARK +ATOM 1 Na+ Na+ 1 0.000 0.000 0.000 1.00 0.00 N +TER +END diff --git AmberTools/test/nab/Run.rism_ion AmberTools/test/nab/Run.rism_ion new file mode 100755 index 0000000..7aaec66 --- /dev/null +++ AmberTools/test/nab/Run.rism_ion @@ -0,0 +1,39 @@ +#!/bin/sh + +toomany() { + echo "${0}: This test requires 1, 2, 3, 4, 6, 8, 12 or 24 processes" + echo "for meaningful comparison." + exit 0 +} + +if [ -n "${DO_PARALLEL}" ] ; then + numprocs=`echo $DO_PARALLEL | awk -f ../numprocs.awk ` + if [ ! \( "$numprocs" -eq "12" -o "$numprocs" -eq "24"\ + -o "$numprocs" -eq "8" -o "$numprocs" -eq "6"\ + -o "$numprocs" -eq "3" -o "$numprocs" -eq "4"\ + -o "$numprocs" -eq "2" -o "$numprocs" -le "1" \) ]; then + echo " DO_PARALLEL set to $DO_PARALLEL" + toomany + elif [ -n "${MP_PROCS}" ]; then + if [ ! \( "$MP_PROCS" -eq "12" -o "$MP_PROCS" -eq "24"\ + -o "$MP_PROCS" -eq "8" -o "$MP_PROCS" -eq "6"\ + -o "$MP_PROCS" -eq "3" -o "$MP_PROCS" -eq "4"\ + -o "$MP_PROCS" -eq "2" -o "$MP_PROCS" -le "1" \) ]; then +# --- For IBM AIX --- + echo " MP_PROCS set to "$MP_PROCS + toomany + fi + fi +fi +. ../program_error.sh + +echo "Running test for ionic solvent and charge solute" +echo "(this tests the 3D-RISM-KH implementation)" +echo "" +../../bin/nab -o sff rismion.nab || error +$DO_PARALLEL ./sff > rismion.out || error + +../dacdif rismion.out.check rismion.out + +rm -f sff rismion.c +exit 0 diff --git AmberTools/test/nab/cuv.H1.4.dx.check AmberTools/test/nab/cuv.H1.4.dx.check index a53e547..0da490c 100644 --- AmberTools/test/nab/cuv.H1.4.dx.check +++ AmberTools/test/nab/cuv.H1.4.dx.check @@ -344,7 +344,7 @@ object 3 class array type double rank 0 items 5184 follows 0.70282E-001 0.80739E-001 0.91198E-001 0.94417E-001 0.91703E-001 0.77197E-001 0.50502E-001 0.19853E-001 -0.36599E-003 - 0.22738E-005 0.16691E-001 0.36195E-001 + 0.22736E-005 0.16691E-001 0.36195E-001 0.49401E-001 0.53981E-001 0.53966E-001 0.47335E-001 0.56527E-001 0.67703E-001 0.78860E-001 0.90368E-001 0.10008E+000 diff --git AmberTools/test/nab/huv.H1.4.dx.check AmberTools/test/nab/huv.H1.4.dx.check index 50eb343..dcd2990 100644 --- AmberTools/test/nab/huv.H1.4.dx.check +++ AmberTools/test/nab/huv.H1.4.dx.check @@ -37,7 +37,7 @@ object 3 class array type double rank 0 items 5184 follows -0.39322E-002 -0.18784E-002 -0.58137E-002 0.10207E-002 0.62249E-003 -0.98638E-003 0.37094E-003 -0.28752E-003 0.22042E-004 - -0.99891E-004 0.15368E-003 -0.19634E-004 + -0.99891E-004 0.15368E-003 -0.19635E-004 0.35824E-003 -0.40488E-003 0.40397E-003 0.14213E-003 0.61945E-002 -0.76858E-002 0.81862E-002 -0.54091E-002 0.13352E-002 @@ -58,7 +58,7 @@ object 3 class array type double rank 0 items 5184 follows 0.22994E-002 -0.34751E-002 -0.37733E-001 -0.16433E-001 -0.59317E-002 0.71093E-002 -0.46373E-002 0.32238E-002 -0.25894E-002 - 0.22145E-002 -0.65291E-004 -0.12695E-003 + 0.22145E-002 -0.65292E-004 -0.12695E-003 -0.16873E-003 0.45506E-003 -0.14159E-002 0.16342E-002 -0.79582E-002 0.56556E-002 -0.43786E-001 -0.46923E-002 -0.27685E-002 @@ -96,11 +96,11 @@ object 3 class array type double rank 0 items 5184 follows 0.34445E-003 0.33513E-002 0.63723E-003 -0.45516E-003 0.16641E-004 -0.90223E-004 0.10300E-003 -0.99252E-004 0.15249E-004 - -0.10662E-004 -0.19945E-004 -0.63404E-006 + -0.10662E-004 -0.19945E-004 -0.63406E-006 0.11124E-004 -0.28230E-004 -0.31534E-003 -0.33642E-002 -0.57217E-003 -0.27793E-002 -0.74846E-003 0.29526E-003 -0.94696E-004 - 0.64217E-004 -0.66025E-004 -0.40449E-005 + 0.64216E-004 -0.66025E-004 -0.40449E-005 -0.30799E-004 -0.16361E-004 -0.62269E-004 -0.51020E-005 -0.16001E-003 0.92448E-004 -0.57830E-003 -0.21012E-002 -0.69590E-003 @@ -117,7 +117,7 @@ object 3 class array type double rank 0 items 5184 follows -0.21378E-002 -0.44258E-003 -0.15111E-002 -0.13934E-002 0.53131E-003 -0.22947E-003 -0.74937E-005 -0.46655E-004 -0.61371E-004 - 0.61593E-004 0.13955E-004 0.16010E-003 + 0.61594E-004 0.13955E-004 0.16010E-003 -0.17966E-003 0.34275E-003 -0.36108E-003 0.76113E-003 0.23418E-002 0.29182E-003 0.19046E-002 0.12879E-002 -0.85274E-003 @@ -131,7 +131,7 @@ object 3 class array type double rank 0 items 5184 follows -0.24936E-003 0.43593E-003 -0.38975E-003 0.48502E-003 -0.28550E-003 0.94466E-003 0.27789E-002 0.71808E-003 0.38223E-002 - -0.14124E-004 -0.13567E-002 0.12326E-002 + -0.14125E-004 -0.13567E-002 0.12326E-002 -0.66934E-003 0.45864E-003 -0.28062E-003 -0.43706E-003 0.34374E-003 -0.56160E-003 0.23427E-003 -0.19776E-003 -0.12917E-003 @@ -182,7 +182,7 @@ object 3 class array type double rank 0 items 5184 follows -0.11703E-002 0.14706E-002 -0.40144E-003 0.10286E-003 0.45475E-004 -0.49081E-004 -0.47357E-004 0.54489E-006 -0.61082E-004 - 0.65984E-004 -0.69587E-004 -0.10541E-003 + 0.65984E-004 -0.69588E-004 -0.10541E-003 0.64247E-003 0.25698E-002 0.28005E-002 0.27413E-002 0.12876E-002 -0.75471E-003 0.57492E-004 0.66448E-004 -0.42928E-004 @@ -229,7 +229,7 @@ object 3 class array type double rank 0 items 5184 follows -0.40783E-002 0.30972E-002 -0.35632E-002 -0.14974E-004 0.13258E-002 -0.10864E-002 0.34485E-003 -0.16911E-003 -0.62126E-004 - 0.72158E-004 -0.22208E-004 0.77266E-004 + 0.72158E-004 -0.22208E-004 0.77265E-004 0.24040E-003 -0.72533E-003 0.13593E-002 -0.16119E-002 0.10078E-001 -0.20050E-001 0.72175E-002 -0.45419E-002 0.45478E-003 @@ -292,7 +292,7 @@ object 3 class array type double rank 0 items 5184 follows 0.33230E-003 -0.62327E-003 0.36713E-003 -0.30819E-002 -0.32037E-003 -0.17162E-002 -0.14580E-002 0.46999E-003 -0.97290E-004 - -0.73333E-004 0.14729E-006 -0.11485E-003 + -0.73333E-004 0.14727E-006 -0.11485E-003 -0.10058E-003 0.62528E-004 -0.17489E-003 0.15221E-003 -0.46879E-003 0.25396E-003 -0.52915E-003 -0.27851E-002 0.22929E-002 @@ -318,7 +318,7 @@ object 3 class array type double rank 0 items 5184 follows -0.68610E-003 0.64051E-003 -0.81356E-003 0.24281E-003 -0.94464E-003 -0.31260E-002 0.48815E-002 -0.32512E-002 -0.12194E-002 - 0.15282E-002 -0.10747E-002 0.37017E-003 + 0.15282E-002 -0.10747E-002 0.37016E-003 -0.43401E-003 0.37194E-003 0.90390E-003 -0.87376E-003 0.10045E-002 -0.10100E-002 0.89048E-003 -0.53634E-003 0.18096E-002 @@ -355,14 +355,14 @@ object 3 class array type double rank 0 items 5184 follows 0.26923E-003 -0.62333E-003 0.92867E-003 -0.23947E-002 0.40142E-002 -0.86299E-002 0.45605E-002 -0.33767E-001 0.48411E-002 - -0.86790E-002 0.13146E-002 -0.92538E-004 + -0.86790E-002 0.13146E-002 -0.92539E-004 -0.33552E-003 -0.15197E-003 0.54828E-004 -0.61954E-003 0.61334E-003 -0.71350E-003 0.88754E-003 -0.46185E-003 -0.11825E-002 0.49261E-002 -0.92336E-002 0.11674E-001 -0.57510E-002 0.61122E-002 0.39077E-003 -0.16127E-002 0.13002E-002 -0.76188E-003 - 0.68127E-003 0.46393E-003 -0.60936E-003 + 0.68127E-003 0.46394E-003 -0.60936E-003 0.83803E-003 -0.13684E-002 0.18949E-002 -0.20507E-002 0.86720E-003 0.55761E-002 -0.38872E-002 0.87045E-002 0.57034E-003 @@ -384,7 +384,7 @@ object 3 class array type double rank 0 items 5184 follows 0.14459E-002 -0.36764E-002 -0.16466E-002 0.78190E-003 -0.21388E-003 -0.13391E-003 -0.71292E-004 -0.25972E-004 0.81385E-005 - -0.75784E-005 0.84210E-004 -0.57027E-004 + -0.75783E-005 0.84210E-004 -0.57027E-004 0.24646E-003 -0.15344E-004 0.44974E-003 0.29483E-002 -0.13186E-002 0.30172E-002 0.14066E-002 -0.51937E-003 0.13804E-003 @@ -425,7 +425,7 @@ object 3 class array type double rank 0 items 5184 follows 0.15873E-002 -0.26341E-002 0.28432E-002 0.49007E-003 0.10263E-001 -0.44098E-001 0.25985E-003 -0.50604E-002 0.20816E-002 - -0.97801E-005 -0.13212E-003 -0.22909E-003 + -0.97796E-005 -0.13212E-003 -0.22909E-003 0.48134E-003 0.52250E-002 -0.61139E-002 0.74868E-002 -0.97022E-002 0.12736E-001 -0.13924E-001 0.13569E-001 -0.16048E-001 @@ -442,13 +442,13 @@ object 3 class array type double rank 0 items 5184 follows -0.17468E-001 0.24222E-001 -0.13107E+000 -0.65242E-001 0.19459E-001 -0.38769E-002 -0.13998E-002 0.28896E-002 -0.44039E-002 - 0.52052E-002 0.11744E-002 0.25963E-003 + 0.52052E-002 0.11744E-002 0.25964E-003 -0.21866E-002 0.47172E-002 -0.81182E-002 0.10154E-001 -0.15684E-001 0.18417E-001 -0.10597E+000 0.22097E-001 0.78443E-003 -0.56097E-002 0.55039E-002 -0.44612E-002 0.32653E-002 -0.22953E-002 -0.13331E-002 - 0.91243E-003 -0.94485E-004 -0.12826E-002 + 0.91243E-003 -0.94484E-004 -0.12826E-002 0.43961E-002 -0.78443E-002 0.13464E-001 -0.13779E-002 0.40528E-001 -0.22036E-002 0.10425E-001 -0.96531E-003 -0.13430E-002 @@ -512,13 +512,13 @@ object 3 class array type double rank 0 items 5184 follows 0.11827E-001 -0.45014E-002 0.27467E-002 -0.41543E-003 -0.71183E-003 0.52608E-003 -0.64382E-003 0.45191E-003 0.50605E-003 - -0.44980E-003 0.37809E-003 -0.38388E-004 + -0.44981E-003 0.37809E-003 -0.38389E-004 -0.49061E-003 -0.81143E-003 0.86459E-002 -0.45388E-002 -0.19539E-001 -0.35704E-002 - -0.21204E-002 0.67039E-003 0.70119E-003 + -0.21204E-002 0.67038E-003 0.70119E-003 -0.74427E-003 0.55233E-003 -0.45289E-003 -0.11702E-002 0.10513E-002 -0.10446E-002 - 0.48184E-003 -0.52832E-003 0.40688E-002 + 0.48184E-003 -0.52833E-003 0.40688E-002 -0.13663E-001 -0.53287E-002 0.80893E-001 0.13554E-001 0.87640E-003 -0.12860E-002 -0.94409E-003 0.13653E-002 -0.14728E-002 @@ -570,12 +570,12 @@ object 3 class array type double rank 0 items 5184 follows 0.55487E-003 0.57562E-002 -0.85141E-003 0.10230E-001 0.16214E-002 -0.31963E-002 0.16965E-002 -0.39151E-003 0.11883E-003 - 0.27054E-005 -0.64436E-004 0.29371E-004 + 0.27053E-005 -0.64436E-004 0.29371E-004 -0.24818E-003 0.15603E-003 -0.36597E-003 -0.15165E-003 -0.30508E-003 -0.55843E-002 0.25615E-002 -0.87369E-002 -0.12896E-002 0.21029E-002 -0.12728E-002 0.23925E-003 - -0.20980E-003 -0.40398E-004 -0.37869E-004 + -0.20980E-003 -0.40397E-004 -0.37869E-004 -0.22762E-004 0.97304E-004 -0.13256E-003 0.76121E-004 0.46124E-003 -0.11364E-003 0.51685E-002 -0.25639E-002 0.77172E-002 @@ -627,7 +627,7 @@ object 3 class array type double rank 0 items 5184 follows -0.13873E-001 0.13771E-001 -0.15353E-001 0.19554E-001 -0.31206E-001 0.64687E-002 0.12878E+000 0.43115E+000 0.18311E+000 - -0.42341E-001 0.49587E-002 0.50176E-002 + -0.42341E-001 0.49588E-002 0.50176E-002 -0.10381E-001 0.12020E-001 -0.13237E-001 -0.18428E-001 0.21596E-001 -0.25230E-001 0.33125E-001 -0.42929E-001 0.59353E-001 @@ -693,12 +693,12 @@ object 3 class array type double rank 0 items 5184 follows -0.13202E-001 -0.15081E-001 0.28654E-002 0.45947E-002 -0.39497E-002 0.16991E-002 -0.85009E-003 0.46037E-003 -0.41389E-003 - -0.11503E-004 -0.26360E-004 0.13328E-004 + -0.11503E-004 -0.26361E-004 0.13328E-004 0.44265E-003 -0.10259E-002 -0.89230E-003 0.43360E-002 0.12999E-001 0.67878E-002 -0.14383E-001 -0.53637E-003 0.27114E-002 -0.14313E-002 0.43554E-003 -0.55232E-004 - 0.54550E-004 -0.19917E-002 0.19778E-002 + 0.54549E-004 -0.19917E-002 0.19778E-002 -0.22171E-002 0.17858E-002 -0.28501E-002 0.81796E-002 -0.15748E-001 -0.97599E-002 0.11465E-001 0.41396E-001 -0.12368E-001 @@ -737,7 +737,7 @@ object 3 class array type double rank 0 items 5184 follows 0.33287E-001 -0.21712E-001 0.12598E-001 -0.78119E-002 0.22442E-002 -0.20161E-001 0.21504E-001 -0.24273E-001 0.27271E-001 - -0.28503E-001 0.16461E-001 -0.41419E-004 + -0.28503E-001 0.16461E-001 -0.41414E-004 -0.12990E+000 0.75360E-001 -0.11560E+000 -0.19544E-001 0.27969E-001 -0.25346E-001 0.21675E-001 -0.20092E-001 0.19462E-001 @@ -766,7 +766,7 @@ object 3 class array type double rank 0 items 5184 follows -0.47737E-003 -0.51835E-004 0.58766E-003 -0.52596E-003 0.72315E-003 -0.11079E-001 -0.25431E-001 -0.12595E-001 0.68054E-002 - -0.18857E-002 0.60829E-004 0.13868E-003 + -0.18857E-002 0.60830E-004 0.13868E-003 -0.55933E-003 0.34562E-003 -0.15041E-003 0.80074E-004 -0.32555E-003 0.67842E-003 -0.15202E-002 0.14050E-002 -0.80795E-003 @@ -798,7 +798,7 @@ object 3 class array type double rank 0 items 5184 follows -0.27721E-002 0.29741E-002 -0.49061E-003 -0.72566E-002 0.14443E-001 -0.11927E-001 0.82051E-001 0.95570E-002 0.10700E-002 - -0.33922E-004 0.14627E-003 0.88681E-003 + -0.33919E-004 0.14627E-003 0.88681E-003 -0.13081E-002 0.21604E-002 0.33550E-002 -0.40840E-002 0.36977E-002 -0.35055E-002 0.41269E-003 0.67781E-002 0.27814E-002 @@ -892,9 +892,9 @@ object 3 class array type double rank 0 items 5184 follows 0.63672E-002 -0.57904E-002 0.46308E-002 -0.36396E-002 -0.26400E-002 0.17391E-002 -0.14131E-002 0.78246E-003 -0.61051E-003 - 0.63366E-003 0.24693E-001 0.29656E-001 + 0.63365E-003 0.24693E-001 0.29656E-001 0.13438E+000 0.27901E-001 -0.22954E-001 - 0.12869E-001 -0.76758E-002 0.58582E-002 + 0.12869E-001 -0.76757E-002 0.58582E-002 -0.46806E-002 0.36183E-002 0.68827E-002 -0.57133E-002 0.56860E-002 -0.66211E-002 0.99125E-002 -0.15797E-001 -0.52503E-002 @@ -908,7 +908,7 @@ object 3 class array type double rank 0 items 5184 follows -0.45900E-001 0.36916E-001 -0.30142E-001 0.26465E-001 0.50030E-001 -0.48827E-001 0.51561E-001 -0.58944E-001 0.74179E-001 - -0.94716E-001 0.36687E-001 -0.46168E+000 + -0.94715E-001 0.36687E-001 -0.46168E+000 -0.10000E+001 -0.17472E+000 0.15670E+000 -0.98122E-001 0.78741E-001 -0.64288E-001 0.58448E-001 -0.52472E-001 0.59653E-001 @@ -931,7 +931,7 @@ object 3 class array type double rank 0 items 5184 follows -0.21260E-001 0.26058E-001 -0.35050E-001 0.44521E-001 -0.58930E-001 -0.46967E-002 -0.62950E+000 -0.10000E+001 -0.58023E+000 - 0.84660E-001 -0.20803E-001 -0.24936E-003 + 0.84661E-001 -0.20803E-001 -0.24937E-003 -0.56711E-002 0.77515E-002 -0.12967E-001 -0.33634E-001 0.36370E-001 -0.40813E-001 0.52730E-001 -0.69416E-001 0.11055E+000 @@ -940,7 +940,7 @@ object 3 class array type double rank 0 items 5184 follows -0.50993E-001 0.42341E-001 -0.35645E-001 0.34334E-001 0.13016E-002 -0.18908E-002 0.21484E-002 -0.35223E-002 0.43357E-002 - -0.52692E-002 -0.30889E-001 -0.10458E+000 + -0.52692E-002 -0.30890E-001 -0.10458E+000 0.59570E-001 -0.10076E+000 -0.14057E-001 0.10367E-001 -0.60574E-002 0.13132E-002 0.10164E-003 -0.11144E-002 -0.80129E-003 @@ -1070,7 +1070,7 @@ object 3 class array type double rank 0 items 5184 follows -0.27848E-002 0.34661E-002 -0.63123E-002 0.10345E-001 -0.10633E-001 -0.26698E-001 0.37697E-001 -0.14235E-001 -0.27804E-003 - -0.11597E-002 0.47695E-005 0.21900E-003 + -0.11597E-002 0.47700E-005 0.21900E-003 -0.12610E-002 0.14246E-002 0.19513E-002 -0.22230E-002 0.25913E-002 -0.34398E-002 0.62826E-002 -0.11033E-001 0.11857E-001 @@ -1096,7 +1096,7 @@ object 3 class array type double rank 0 items 5184 follows 0.17629E-001 -0.16578E-001 0.17704E-001 -0.21181E-001 0.31547E-001 -0.44986E-001 0.53814E-001 0.61709E-001 0.41895E-001 - -0.58391E-002 0.71644E-001 -0.50130E-001 + -0.58392E-002 0.71644E-001 -0.50130E-001 0.37052E-001 -0.27166E-001 0.23023E-001 -0.18847E-001 -0.57070E-002 0.32394E-002 -0.47133E-002 0.71203E-002 -0.17409E-001 @@ -1107,7 +1107,7 @@ object 3 class array type double rank 0 items 5184 follows 0.49908E-002 0.25980E-002 -0.10390E-001 0.32835E-001 -0.45644E-001 0.28388E-001 0.32651E+000 0.74550E+000 0.24253E-001 - 0.23336E-001 -0.11200E-002 -0.67666E-003 + 0.23336E-001 -0.11200E-002 -0.67665E-003 0.71472E-002 -0.62491E-002 0.83474E-002 0.87319E-002 -0.53331E-002 -0.65393E-002 0.88129E-002 -0.14593E-001 -0.30915E-001 @@ -1176,7 +1176,7 @@ object 3 class array type double rank 0 items 5184 follows -0.12868E-002 0.13040E-002 -0.18307E-002 0.20870E-002 -0.20382E-002 -0.55964E-003 0.10698E-001 -0.18290E-001 -0.17347E-001 - -0.20057E-001 0.63536E-002 0.17849E-002 + -0.20057E-001 0.63535E-002 0.17849E-002 -0.22938E-002 0.16177E-002 -0.12481E-002 0.13489E-002 0.17604E-002 -0.20387E-002 0.25830E-002 -0.26311E-002 0.23498E-002 @@ -1185,10 +1185,10 @@ object 3 class array type double rank 0 items 5184 follows 0.18402E-003 0.20794E-002 -0.11926E-002 0.85856E-003 -0.15532E-002 -0.58085E-003 0.92325E-003 -0.15671E-002 0.13684E-002 - -0.42686E-004 -0.63990E-002 0.22899E-001 + -0.42684E-004 -0.63990E-002 0.22899E-001 -0.20083E-001 -0.31172E-001 -0.30073E-001 0.24308E-001 -0.79050E-002 0.21845E-002 - -0.11634E-002 0.88798E-003 -0.46213E-005 + -0.11634E-002 0.88799E-003 -0.46216E-005 -0.36939E-002 0.25957E-002 -0.19040E-002 0.22213E-002 -0.44518E-002 0.13471E-001 -0.31065E-001 0.13930E-001 0.26443E-001 @@ -1216,7 +1216,7 @@ object 3 class array type double rank 0 items 5184 follows 0.12872E+000 -0.22970E+000 0.37029E-001 -0.71820E-002 -0.61730E-002 0.60023E-002 -0.62195E-002 0.33179E-002 0.35063E-002 - -0.15743E-002 0.24932E-003 0.59944E-003 + -0.15743E-002 0.24932E-003 0.59943E-003 0.50805E-002 -0.22435E-001 0.78080E-001 -0.11217E+000 0.27769E+000 0.13301E-001 0.48142E-001 -0.25712E-001 0.18216E-001 @@ -1234,8 +1234,8 @@ object 3 class array type double rank 0 items 5184 follows -0.37349E-002 0.40923E-002 0.33100E-003 -0.73044E-003 0.14901E-002 -0.27451E-002 0.39569E-002 -0.39194E-002 -0.22396E-002 - 0.69572E-002 0.15456E-001 0.68766E-003 - -0.55836E-002 -0.59161E-004 0.28366E-003 + 0.69572E-002 0.15456E-001 0.68765E-003 + -0.55836E-002 -0.59162E-004 0.28366E-003 0.59373E-005 -0.29036E-003 -0.28278E-003 -0.93105E-004 0.55976E-004 -0.22540E-003 0.63416E-003 -0.86325E-003 -0.56872E-003 @@ -1259,13 +1259,13 @@ object 3 class array type double rank 0 items 5184 follows -0.21463E-002 -0.95702E-003 0.16305E-002 -0.48868E-003 0.37838E-003 -0.98649E-004 0.17415E-003 -0.39204E-003 0.40478E-003 - -0.47636E-003 0.25159E-003 0.32794E-005 + -0.47636E-003 0.25159E-003 0.32795E-005 -0.27191E-003 -0.25541E-002 0.80677E-002 0.23348E-001 0.22086E-002 0.10997E-002 -0.16811E-002 0.61473E-003 -0.17759E-003 -0.60773E-004 0.91723E-004 0.50744E-003 -0.63597E-003 0.55533E-003 -0.33123E-003 - -0.68908E-005 0.25682E-003 0.26735E-002 + -0.68909E-005 0.25682E-003 0.26735E-002 -0.91015E-002 -0.22651E-001 -0.42938E-002 -0.10604E-002 0.20136E-002 -0.89377E-003 0.20609E-003 0.28182E-004 -0.21460E-003 @@ -1273,7 +1273,7 @@ object 3 class array type double rank 0 items 5184 follows 0.63594E-004 0.46567E-003 -0.90712E-003 -0.31638E-002 0.94292E-002 0.26064E-001 0.58926E-002 0.14824E-003 -0.26379E-002 - 0.13364E-002 -0.27849E-003 0.67584E-007 + 0.13364E-002 -0.27849E-003 0.67664E-007 0.21329E-003 0.75173E-003 -0.70904E-003 0.24518E-003 -0.31473E-003 -0.44500E-003 -0.26955E-003 0.56039E-002 -0.11484E-001 @@ -1298,7 +1298,7 @@ object 3 class array type double rank 0 items 5184 follows -0.74153E-002 0.51462E-002 -0.85486E-002 0.10486E-001 -0.12082E-001 0.13714E-001 -0.11389E-001 0.19279E-002 0.36232E-001 - -0.48818E-001 0.17388E+000 -0.35474E-002 + -0.48818E-001 0.17388E+000 -0.35475E-002 -0.97685E-002 0.97677E-002 -0.64763E-002 0.62604E-002 -0.67795E-002 0.78175E-002 0.18823E-001 -0.16976E-001 0.13255E-001 @@ -1310,7 +1310,7 @@ object 3 class array type double rank 0 items 5184 follows -0.59406E-002 0.53394E-002 -0.13726E-002 -0.50565E-002 0.17728E-001 0.83748E-001 -0.37446E-001 0.12400E+000 -0.15472E-001 - -0.38171E-003 0.54899E-002 -0.24982E-002 + -0.38172E-003 0.54899E-002 -0.24982E-002 -0.85504E-004 0.30624E-002 0.30068E-002 -0.46418E-002 0.65796E-002 -0.90030E-002 0.10723E-001 -0.66793E-002 -0.19808E-001 @@ -1330,7 +1330,7 @@ object 3 class array type double rank 0 items 5184 follows 0.99945E-003 -0.12217E-002 0.75822E-003 -0.58237E-003 0.70553E-004 0.47287E-004 -0.92834E-003 0.22845E-002 -0.35398E-003 - -0.49955E-002 -0.32604E-001 0.29414E-003 + -0.49955E-002 -0.32604E-001 0.29415E-003 0.26270E-002 0.12013E-003 0.18530E-003 -0.67394E-003 0.78294E-003 -0.77240E-003 -0.39514E-003 0.36294E-003 -0.34122E-003 @@ -1340,7 +1340,7 @@ object 3 class array type double rank 0 items 5184 follows -0.43384E-003 0.62665E-003 -0.53140E-003 0.35037E-003 0.11598E-003 -0.33590E-004 0.77756E-004 -0.11361E-003 0.29272E-004 - 0.53713E-003 0.24967E-002 -0.95835E-002 + 0.53714E-003 0.24967E-002 -0.95835E-002 -0.23813E-001 -0.28729E-002 0.35840E-003 0.75277E-003 0.14870E-003 -0.18813E-003 0.13874E-003 0.53665E-005 -0.82118E-004 @@ -1383,7 +1383,7 @@ object 3 class array type double rank 0 items 5184 follows 0.14890E-002 -0.11973E-002 0.75295E-003 -0.10473E-002 0.10737E-002 -0.99465E-003 0.10667E-002 0.18484E-003 -0.15909E-002 - -0.44370E-003 0.65566E-002 0.16554E-001 + -0.44371E-003 0.65566E-002 0.16554E-001 0.15235E-001 -0.16429E-001 0.79078E-002 -0.29231E-002 0.16543E-002 -0.11884E-002 0.10008E-002 0.22131E-002 -0.11833E-002 @@ -1395,7 +1395,7 @@ object 3 class array type double rank 0 items 5184 follows -0.34902E-002 0.51729E-002 -0.78836E-002 0.96755E-002 -0.80416E-002 -0.15180E-001 0.48776E-001 -0.11424E+000 0.12364E-001 - 0.32693E-002 -0.19227E-002 -0.65699E-004 + 0.32693E-002 -0.19227E-002 -0.65698E-004 0.16871E-003 0.29036E-004 -0.95792E-003 -0.31449E-002 0.21159E-002 -0.34442E-003 0.30292E-003 0.22482E-002 -0.56246E-002 @@ -1476,10 +1476,10 @@ object 3 class array type double rank 0 items 5184 follows -0.15578E-002 0.14449E-002 -0.13015E-002 0.35158E-002 0.18690E-001 0.71087E-002 -0.33624E-002 -0.86947E-004 0.13615E-002 - -0.25872E-003 -0.28246E-003 0.49430E-003 + -0.25873E-003 -0.28246E-003 0.49430E-003 0.20061E-002 -0.22055E-002 0.25174E-002 -0.32849E-002 0.24711E-002 -0.12430E-002 - 0.31615E-004 -0.16073E-002 -0.13936E-001 + 0.31616E-004 -0.16073E-002 -0.13936E-001 -0.78198E-002 0.10677E-001 -0.53430E-002 0.19467E-002 -0.20078E-002 0.18727E-002 -0.18399E-002 -0.24069E-002 0.18144E-002 @@ -1523,13 +1523,13 @@ object 3 class array type double rank 0 items 5184 follows -0.57937E-004 0.38925E-004 -0.25529E-003 -0.80223E-004 0.62244E-003 -0.92409E-003 -0.50111E-002 -0.15028E-001 -0.48849E-002 - 0.10809E-002 0.94785E-003 -0.90578E-003 + 0.10809E-002 0.94785E-003 -0.90579E-003 0.21632E-003 0.48547E-004 -0.10362E-003 0.65746E-004 -0.57485E-004 -0.10330E-003 0.17296E-003 -0.10843E-003 -0.17317E-003 0.24191E-003 0.53215E-002 0.12629E-001 0.39700E-002 -0.84627E-004 -0.65947E-003 - 0.46649E-003 -0.16035E-003 0.28558E-005 + 0.46649E-003 -0.16035E-003 0.28557E-005 -0.74149E-004 -0.74431E-004 0.89221E-004 0.14291E-004 -0.10742E-003 0.75570E-004 0.32302E-003 -0.45917E-003 -0.47563E-002 @@ -1555,7 +1555,7 @@ object 3 class array type double rank 0 items 5184 follows -0.24567E-003 0.25650E-003 -0.22210E-003 0.35310E-003 -0.54501E-003 0.49667E-003 0.46922E-002 0.53681E-003 0.53276E-002 - -0.25038E-004 -0.47621E-003 0.25061E-003 + -0.25039E-004 -0.47621E-003 0.25061E-003 -0.14151E-003 0.25689E-003 -0.23625E-003 -0.39925E-003 0.24288E-003 -0.45878E-003 0.19103E-003 -0.46845E-003 0.39169E-003 @@ -1602,7 +1602,7 @@ object 3 class array type double rank 0 items 5184 follows -0.42312E-002 0.26362E-002 0.71520E-003 -0.20235E-003 -0.89467E-004 0.11620E-002 -0.32420E-002 0.52388E-002 0.58477E-003 - -0.67996E-002 0.56024E-005 0.55241E-003 + -0.67996E-002 0.56018E-005 0.55241E-003 0.13967E-001 -0.58142E-002 0.37372E-002 -0.25763E-002 0.19323E-002 -0.10220E-002 -0.13957E-003 0.89996E-004 -0.29649E-003 @@ -1726,7 +1726,7 @@ object 3 class array type double rank 0 items 5184 follows -0.65025E-004 0.20691E-004 0.20988E-004 0.29987E-003 -0.69971E-003 -0.25561E-002 -0.47408E-002 -0.17716E-002 -0.10624E-002 - 0.72365E-003 -0.12367E-003 0.91100E-004 + 0.72365E-003 -0.12367E-003 0.91099E-004 -0.11286E-003 0.65700E-004 -0.38225E-004 -0.18443E-004 -0.10315E-004 -0.41438E-004 -0.23530E-004 -0.27346E-003 0.79396E-003 diff --git AmberTools/test/nab/huv.O.4.dx.check AmberTools/test/nab/huv.O.4.dx.check index add5688..c409ca4 100644 --- AmberTools/test/nab/huv.O.4.dx.check +++ AmberTools/test/nab/huv.O.4.dx.check @@ -42,10 +42,10 @@ object 3 class array type double rank 0 items 5184 follows -0.26664E-002 0.76462E-002 -0.65646E-002 0.65013E-002 -0.98756E-002 0.51997E-002 -0.15412E-002 0.14894E-002 -0.58327E-003 - 0.74208E-003 -0.46330E-005 0.26925E-003 + 0.74208E-003 -0.46331E-005 0.26925E-003 -0.21081E-003 0.19041E-003 -0.70176E-003 0.40604E-002 -0.59967E-002 0.25324E-001 - -0.58949E-001 0.48671E-001 -0.63192E-002 + -0.58949E-001 0.48671E-001 -0.63193E-002 -0.14555E-002 0.17515E-002 -0.12653E-002 0.59124E-003 -0.44081E-004 -0.46024E-003 -0.33221E-003 0.43262E-003 -0.73462E-003 @@ -55,10 +55,10 @@ object 3 class array type double rank 0 items 5184 follows 0.29042E-002 -0.18964E-002 0.77617E-003 -0.18302E-003 0.26483E-004 0.13553E-002 -0.75012E-003 0.17059E-002 -0.70949E-003 - 0.15620E-001 0.67864E-002 -0.96628E-001 + 0.15620E-001 0.67863E-002 -0.96628E-001 -0.15238E-001 -0.64540E-002 0.11108E-001 -0.71349E-002 0.42594E-002 -0.24297E-002 - 0.14742E-002 0.50969E-003 -0.14490E-003 + 0.14742E-002 0.50969E-003 -0.14489E-003 -0.15852E-002 0.26525E-002 -0.54371E-002 0.63513E-002 -0.19991E-001 0.88607E-003 -0.90619E-001 -0.26234E-001 0.54685E-002 @@ -74,7 +74,7 @@ object 3 class array type double rank 0 items 5184 follows -0.67192E-002 0.20436E-002 0.15087E-002 -0.12351E-001 -0.10538E-001 0.30347E-002 -0.24133E-002 0.57521E-003 -0.89346E-003 - -0.19758E-003 0.85846E-004 0.21885E-003 + -0.19759E-003 0.85846E-004 0.21885E-003 0.59427E-004 0.40476E-003 -0.45294E-003 0.17127E-002 0.22700E-002 -0.36055E-002 -0.94861E-002 -0.31257E-002 0.59927E-002 @@ -89,13 +89,13 @@ object 3 class array type double rank 0 items 5184 follows -0.21190E-003 0.38823E-003 -0.99192E-004 0.14844E-002 -0.48467E-002 -0.10472E-001 -0.56834E-002 0.17312E-002 0.44869E-003 - 0.59430E-004 -0.99269E-004 0.22702E-003 + 0.59429E-004 -0.99269E-004 0.22702E-003 -0.46728E-004 -0.99733E-004 -0.59632E-005 -0.15996E-003 0.21334E-003 -0.60938E-003 0.46539E-003 -0.16741E-002 0.53916E-002 0.73981E-002 0.59857E-002 -0.16663E-002 0.12223E-003 -0.48450E-003 0.17812E-003 - -0.11241E-003 -0.53881E-005 0.24248E-003 + -0.11241E-003 -0.53882E-005 0.24248E-003 -0.20069E-003 0.17999E-003 -0.24877E-003 0.30370E-003 -0.44718E-003 0.73307E-003 -0.42363E-002 -0.80946E-002 -0.48617E-002 @@ -172,7 +172,7 @@ object 3 class array type double rank 0 items 5184 follows 0.18498E-002 -0.73133E-003 0.88568E-003 -0.14499E-003 -0.13914E-004 -0.23519E-003 0.28978E-003 -0.69524E-003 0.99658E-003 - -0.19354E-002 -0.38389E-003 -0.15309E-003 + -0.19354E-002 -0.38389E-003 -0.15308E-003 0.11672E-001 0.37757E-002 -0.51548E-002 -0.91017E-003 0.87189E-003 -0.57806E-003 0.16146E-003 -0.22842E-003 0.37037E-004 @@ -181,7 +181,7 @@ object 3 class array type double rank 0 items 5184 follows -0.96518E-003 -0.13418E-001 -0.54575E-002 0.20411E-002 0.10281E-002 -0.33249E-003 0.17999E-003 0.19469E-003 0.23293E-004 - -0.45970E-005 -0.10166E-003 0.26448E-004 + -0.45969E-005 -0.10166E-003 0.26448E-004 -0.60871E-004 0.21195E-003 -0.53324E-003 0.48474E-003 0.57259E-003 0.14242E-001 0.41534E-002 -0.65370E-003 -0.53279E-003 @@ -259,7 +259,7 @@ object 3 class array type double rank 0 items 5184 follows 0.23319E-002 -0.18642E-002 0.17647E-002 -0.49400E-003 0.48144E-003 0.46341E-002 0.17097E-001 0.13221E-001 0.13122E-001 - 0.88689E-002 -0.14616E-002 0.73569E-004 + 0.88689E-002 -0.14616E-002 0.73570E-004 0.16176E-002 -0.17425E-002 0.23255E-002 0.10067E-002 -0.10794E-002 0.61036E-003 -0.79346E-003 -0.18114E-003 0.10066E-002 @@ -296,7 +296,7 @@ object 3 class array type double rank 0 items 5184 follows -0.79564E-003 0.73627E-003 -0.10642E-002 0.89864E-003 -0.15015E-002 0.74366E-003 -0.10995E-002 -0.91302E-003 -0.14389E-002 - -0.62659E-002 0.16322E-003 0.39747E-003 + -0.62659E-002 0.16322E-003 0.39746E-003 -0.93576E-003 0.27055E-003 -0.70408E-003 0.55227E-003 0.91932E-003 -0.80784E-003 0.10504E-002 -0.99128E-003 0.13799E-002 @@ -333,7 +333,7 @@ object 3 class array type double rank 0 items 5184 follows 0.11332E-002 -0.36329E-002 0.45738E-002 -0.64277E-002 0.84257E-002 -0.10759E-001 0.10170E-001 -0.10632E-001 -0.65535E-002 - 0.50679E-001 -0.70621E-001 0.91916E-002 + 0.50679E-001 -0.70621E-001 0.91917E-002 0.32587E-002 -0.38023E-002 0.34644E-002 -0.32950E-002 0.30559E-002 -0.13480E-003 0.19650E-002 -0.34448E-002 0.59077E-002 @@ -364,7 +364,7 @@ object 3 class array type double rank 0 items 5184 follows 0.19684E-002 -0.10859E-002 0.12621E-002 -0.43675E-003 0.74924E-003 -0.10527E-002 0.16471E-002 -0.24027E-002 0.31736E-002 - -0.29570E-002 -0.47347E-004 -0.17740E-002 + -0.29570E-002 -0.47348E-004 -0.17740E-002 0.12840E-002 0.13132E-001 -0.86557E-002 -0.65506E-003 0.21598E-002 -0.13016E-002 0.84158E-003 -0.68238E-003 -0.21792E-003 @@ -387,7 +387,7 @@ object 3 class array type double rank 0 items 5184 follows -0.60950E-003 0.93571E-003 -0.76457E-003 0.12784E-002 -0.70392E-003 0.15756E-002 -0.13275E-003 0.45733E-002 0.69172E-002 - -0.41320E-003 -0.14128E-004 0.54688E-003 + -0.41320E-003 -0.14127E-004 0.54688E-003 -0.19076E-004 0.49968E-003 -0.38501E-003 0.43234E-003 -0.22011E-003 -0.83980E-005 0.30076E-003 -0.68470E-003 0.24934E-002 @@ -507,13 +507,13 @@ object 3 class array type double rank 0 items 5184 follows 0.78218E-002 -0.41701E-002 -0.79742E-003 0.32867E-002 -0.37463E-002 0.34769E-002 -0.26528E-002 -0.24349E-002 0.21354E-002 - -0.24623E-002 0.90930E-003 0.54718E-003 + -0.24623E-002 0.90930E-003 0.54717E-003 -0.17165E-002 0.28721E-003 -0.10121E-001 0.35717E-001 -0.26042E-002 0.34331E-002 -0.19519E-003 -0.26581E-002 0.27915E-002 -0.33505E-002 0.24742E-002 0.26514E-002 -0.19360E-002 0.14202E-002 -0.31884E-003 - -0.74542E-003 -0.87196E-003 0.41982E-002 + -0.74541E-003 -0.87196E-003 0.41982E-002 0.13483E-001 -0.64738E-001 -0.11160E-001 0.55671E-003 -0.98428E-003 0.33064E-002 -0.35116E-002 0.31262E-002 -0.26684E-002 @@ -524,7 +524,7 @@ object 3 class array type double rank 0 items 5184 follows -0.22229E-002 0.28090E-002 -0.29004E-002 0.20027E-002 -0.27248E-002 0.44242E-002 -0.69761E-002 0.87857E-002 -0.91317E-002 - 0.23035E-002 -0.51691E-002 0.21490E-001 + 0.23035E-002 -0.51692E-002 0.21490E-001 -0.37282E-001 -0.18265E+000 0.58260E-001 -0.16382E-001 0.57561E-002 -0.21236E-002 0.14273E-003 0.11916E-002 0.90109E-003 @@ -556,7 +556,7 @@ object 3 class array type double rank 0 items 5184 follows 0.12840E-001 -0.78465E-002 0.66047E-002 -0.46569E-002 0.17062E-002 -0.20716E-002 0.25710E-002 -0.29188E-002 0.15776E-002 - 0.10926E-002 -0.65054E-002 -0.64167E-004 + 0.10926E-002 -0.65054E-002 -0.64166E-004 0.42370E-002 0.33049E-001 -0.26709E-001 0.72769E-002 -0.60839E-004 -0.13599E-002 0.14205E-002 -0.14190E-002 -0.17898E-002 @@ -589,7 +589,7 @@ object 3 class array type double rank 0 items 5184 follows -0.11534E-002 -0.28262E-003 -0.41205E-003 0.12794E-002 -0.27790E-002 0.41709E-002 -0.68711E-002 0.84175E-002 -0.75839E-002 - -0.28437E-001 0.50508E-003 0.41340E-002 + -0.28437E-001 0.50507E-003 0.41340E-002 -0.61449E-003 -0.18493E-002 0.12523E-002 -0.11168E-002 0.69345E-003 -0.83917E-004 0.57404E-003 -0.17705E-002 0.28814E-002 @@ -611,14 +611,14 @@ object 3 class array type double rank 0 items 5184 follows -0.13675E-002 0.26363E-002 -0.43034E-002 0.41848E-002 0.12480E-002 -0.36641E-002 -0.34640E-001 0.87778E-001 0.58409E-001 - -0.21333E-001 0.74525E-002 -0.48739E-002 + -0.21333E-001 0.74524E-002 -0.48739E-002 0.30753E-002 -0.18387E-002 0.69893E-003 - 0.71286E-003 0.44580E-003 -0.24335E-002 - 0.43811E-002 -0.38330E-002 -0.13636E-002 + 0.71285E-003 0.44580E-003 -0.24335E-002 + 0.43812E-002 -0.38330E-002 -0.13635E-002 -0.13480E-001 0.11325E+000 -0.29436E+000 -0.10004E+000 0.41518E-001 -0.16200E-001 0.94931E-002 -0.61992E-002 0.43081E-002 - -0.25405E-002 -0.34159E-002 0.55821E-003 + -0.25405E-002 -0.34159E-002 0.55820E-003 0.27477E-002 -0.42526E-002 0.30568E-002 0.47572E-002 0.23098E-001 -0.11741E+000 0.20977E+000 0.38183E+000 -0.15864E+000 @@ -640,11 +640,11 @@ object 3 class array type double rank 0 items 5184 follows -0.21429E+000 -0.70469E-001 0.64050E-001 -0.48755E-001 0.39460E-001 -0.31552E-001 0.27718E-001 -0.23853E-001 -0.11746E-002 - -0.76642E-004 0.19535E-002 -0.28967E-002 + -0.76641E-004 0.19535E-002 -0.28967E-002 0.23194E-002 0.14434E-001 -0.39994E-001 0.20057E+000 -0.14250E+000 0.15546E+000 -0.10132E-001 -0.19003E-002 0.31489E-002 - -0.13663E-003 -0.61045E-003 0.13419E-002 + -0.13663E-003 -0.61046E-003 0.13419E-002 -0.56599E-002 0.65318E-002 -0.99441E-002 0.14290E-001 -0.21240E-001 0.25559E-001 -0.26500E-001 -0.45351E-001 0.12464E+000 @@ -654,7 +654,7 @@ object 3 class array type double rank 0 items 5184 follows -0.67183E-003 -0.17567E-002 0.59214E-002 -0.10795E-001 0.19998E-001 0.21432E-003 -0.57072E-001 -0.26436E-001 0.40361E-001 - -0.15950E-001 0.39954E-002 0.38634E-004 + -0.15950E-001 0.39954E-002 0.38633E-004 -0.19542E-002 0.20302E-002 0.41282E-002 -0.37590E-002 0.25828E-002 -0.18860E-002 0.84274E-003 0.59538E-003 -0.40063E-002 @@ -695,7 +695,7 @@ object 3 class array type double rank 0 items 5184 follows 0.36780E-002 -0.41785E-002 0.43203E-002 0.67542E-002 -0.67533E-002 0.79253E-002 -0.75232E-002 0.71990E-002 -0.10331E-001 - 0.88066E-002 0.69559E-002 0.27927E-001 + 0.88065E-002 0.69559E-002 0.27927E-001 -0.45171E-001 0.11785E-001 -0.37993E-002 0.44794E-002 -0.60610E-002 0.70033E-002 -0.62684E-002 -0.97638E-002 0.97810E-002 @@ -730,7 +730,7 @@ object 3 class array type double rank 0 items 5184 follows -0.28215E+000 0.56642E+000 0.92065E+000 0.10006E+001 -0.46958E+000 0.29382E+000 -0.20618E+000 0.16462E+000 -0.13004E+000 - 0.10753E+000 -0.15069E-002 0.65807E-003 + 0.10753E+000 -0.15069E-002 0.65808E-003 -0.59134E-002 0.17916E-001 -0.43687E-001 0.85179E-001 -0.72107E-001 0.17888E+000 0.27398E+000 0.17046E+000 -0.12239E+000 @@ -805,7 +805,7 @@ object 3 class array type double rank 0 items 5184 follows -0.92333E-001 -0.73061E-001 -0.12402E+000 0.49643E-001 -0.24501E-001 0.12081E-001 -0.77686E-002 0.65912E-002 -0.68733E-002 - -0.52386E-001 0.55294E-001 -0.60917E-001 + -0.52386E-001 0.55294E-001 -0.60918E-001 0.72284E-001 -0.90668E-001 0.13640E+000 -0.30725E+000 0.68114E+000 -0.63520E+000 0.69895E+000 -0.30705E+000 0.16706E+000 @@ -815,7 +815,7 @@ object 3 class array type double rank 0 items 5184 follows -0.16169E+000 0.42947E+000 -0.10000E+001 -0.10000E+001 -0.10000E+001 0.34773E+000 -0.16448E+000 0.95838E-001 -0.65437E-001 - 0.53108E-001 -0.49594E-001 0.10228E-004 + 0.53108E-001 -0.49594E-001 0.10227E-004 -0.83130E-002 0.19382E-001 -0.43694E-001 0.82990E-001 -0.15068E+000 0.19264E+000 -0.10000E+001 -0.10000E+001 -0.10000E+001 @@ -853,7 +853,7 @@ object 3 class array type double rank 0 items 5184 follows -0.15840E+000 0.15063E+000 -0.97388E-001 -0.22784E-002 0.85043E-002 -0.62997E-002 0.44880E-002 -0.39095E-002 0.45371E-002 - 0.70889E-004 -0.68019E-003 0.59256E-003 + 0.70888E-004 -0.68019E-003 0.59256E-003 -0.84557E-004 -0.36226E-002 0.15213E-001 -0.31110E-001 0.13861E+000 -0.15051E+000 0.81020E-001 -0.11901E-001 0.36571E-002 @@ -880,10 +880,10 @@ object 3 class array type double rank 0 items 5184 follows -0.36432E+000 0.48476E-001 -0.13337E-001 -0.85939E-003 0.62937E-002 -0.90302E-002 0.96864E-002 -0.10054E-001 -0.12074E-001 - 0.12686E-001 -0.13788E-001 0.15535E-001 + 0.12686E-001 -0.13788E-001 0.15534E-001 -0.12609E-001 0.43721E-002 0.38811E-001 -0.54071E-002 0.36037E+000 -0.26901E-001 - -0.91861E-004 0.75691E-002 -0.10423E-001 + -0.91871E-004 0.75691E-002 -0.10423E-001 0.13325E-001 -0.12466E-001 0.12184E-001 0.16486E-001 -0.16264E-001 0.18217E-001 -0.18145E-001 0.15178E-001 -0.90728E-002 @@ -943,7 +943,7 @@ object 3 class array type double rank 0 items 5184 follows -0.29396E-001 -0.11815E-001 -0.23817E+000 -0.18515E+000 -0.25452E+000 0.27722E-001 0.16855E-002 -0.72308E-002 0.20876E-002 - 0.64586E-003 -0.38825E-002 0.21534E-002 + 0.64585E-003 -0.38825E-002 0.21535E-002 0.21199E-003 -0.19208E-002 0.42601E-002 -0.22560E-002 -0.69878E-002 0.71728E-001 0.78877E-002 0.44965E+000 -0.21828E-001 @@ -1064,7 +1064,7 @@ object 3 class array type double rank 0 items 5184 follows 0.62403E-002 -0.60207E-002 0.73668E-002 -0.70398E-002 0.11315E-001 -0.95645E-002 -0.32328E-002 0.87432E-001 -0.15443E+000 - 0.46011E-001 -0.18490E-003 -0.10438E-003 + 0.46011E-001 -0.18489E-003 -0.10438E-003 0.37293E-002 -0.27929E-002 0.52303E-002 -0.50491E-002 -0.64016E-002 0.64120E-002 -0.66729E-002 0.70889E-002 -0.10324E-001 @@ -1089,7 +1089,7 @@ object 3 class array type double rank 0 items 5184 follows -0.29061E-001 0.21213E-001 -0.17088E-001 0.15692E-001 -0.12454E-001 -0.16919E-001 0.14774E-001 -0.13566E-001 0.14799E-001 - -0.20251E-001 0.21467E-001 0.51689E-002 + -0.20251E-001 0.21467E-001 0.51690E-002 -0.17781E+000 0.16897E+000 -0.17823E-001 -0.62278E-001 0.48487E-001 -0.35890E-001 0.27828E-001 -0.25327E-001 0.20069E-001 @@ -1107,7 +1107,7 @@ object 3 class array type double rank 0 items 5184 follows -0.22781E-001 0.41204E-001 -0.58124E-001 0.92982E-001 -0.99577E-001 0.51029E-001 0.38111E+000 0.12849E+001 -0.41711E-001 - 0.46704E-001 -0.59395E-002 0.38283E-002 + 0.46704E-001 -0.59395E-002 0.38284E-002 0.24958E-002 0.34276E-002 -0.52601E-002 -0.10267E-001 0.31273E-001 -0.64242E-001 0.80909E-001 -0.99093E-001 0.32420E-001 @@ -1144,13 +1144,13 @@ object 3 class array type double rank 0 items 5184 follows -0.40730E-002 0.49874E-002 -0.73690E-002 0.73535E-002 -0.95872E-002 0.77701E-002 0.63260E-002 -0.93757E-001 0.13558E+000 - -0.89965E-001 0.17086E-001 -0.10569E-001 + -0.89964E-001 0.17086E-001 -0.10569E-001 0.42904E-002 -0.19884E-002 -0.52517E-003 0.16988E-002 0.51231E-002 -0.58474E-002 0.72663E-002 -0.82602E-002 0.11856E-001 -0.10246E-001 -0.30199E-002 0.86203E-001 -0.14974E+000 0.68805E-001 -0.10227E-001 - 0.55756E-002 -0.95949E-004 -0.69091E-003 + 0.55756E-002 -0.95950E-004 -0.69091E-003 0.22362E-002 -0.35971E-002 -0.60713E-002 0.60472E-002 -0.79022E-002 0.78322E-002 -0.12783E-001 0.10462E-001 0.31255E-002 @@ -1260,7 +1260,7 @@ object 3 class array type double rank 0 items 5184 follows 0.10679E-002 -0.90389E-003 0.16602E-002 -0.11913E-002 -0.20977E-002 0.20942E-002 -0.18004E-002 0.16284E-002 -0.18577E-002 - 0.22835E-002 -0.67831E-002 0.25191E-004 + 0.22835E-002 -0.67831E-002 0.25192E-004 0.76945E-001 -0.45030E-002 -0.18644E-002 -0.90606E-004 -0.93679E-003 0.16082E-002 -0.17131E-002 0.17442E-002 0.26104E-002 @@ -1381,7 +1381,7 @@ object 3 class array type double rank 0 items 5184 follows 0.69183E-002 -0.44728E-001 -0.18229E-001 0.19727E-001 -0.83985E-002 0.19649E-002 -0.81000E-003 0.18733E-002 -0.62522E-003 - -0.12105E-002 -0.72607E-005 0.89095E-003 + -0.12105E-002 -0.72605E-005 0.89095E-003 -0.15643E-002 0.48042E-002 -0.83264E-002 0.65796E-002 -0.21426E-001 0.49776E-001 0.39843E-002 -0.24431E-001 0.15999E-001 @@ -1414,7 +1414,7 @@ object 3 class array type double rank 0 items 5184 follows 0.23073E-001 -0.17327E-001 0.14432E-001 -0.10868E-001 0.93471E-002 -0.68998E-002 -0.26163E-002 0.31335E-002 -0.16844E-002 - -0.29736E-003 0.27007E-002 -0.34378E-002 + -0.29736E-003 0.27007E-002 -0.34377E-002 -0.10124E-001 0.16906E-001 -0.27972E-001 -0.46722E-001 -0.99915E-002 0.74033E-002 -0.49759E-002 0.33691E-002 -0.30633E-002 @@ -1490,7 +1490,7 @@ object 3 class array type double rank 0 items 5184 follows 0.56865E-003 -0.25998E-002 0.23230E-003 -0.48411E-003 0.19935E-002 -0.43491E-002 0.86658E-002 -0.20913E-001 0.67877E-001 - -0.12506E+000 0.30915E+000 -0.45000E-001 + -0.12506E+000 0.30915E+000 -0.45001E-001 0.79047E-002 -0.21891E-003 -0.32671E-003 -0.91926E-003 0.50793E-003 0.11241E-003 0.15086E-001 -0.89428E-002 -0.35368E-003 @@ -1507,7 +1507,7 @@ object 3 class array type double rank 0 items 5184 follows -0.30669E-003 -0.89002E-003 -0.12172E-002 0.45842E-002 -0.33508E-002 -0.14322E-001 0.66905E-002 0.40619E-001 -0.51873E-001 - -0.65372E-002 0.52189E-002 -0.46499E-002 + -0.65372E-002 0.52190E-002 -0.46499E-002 0.43349E-002 -0.38558E-002 0.59891E-003 0.34349E-003 -0.86951E-003 0.19112E-002 -0.11810E-002 -0.18282E-002 0.31268E-002 @@ -1524,7 +1524,7 @@ object 3 class array type double rank 0 items 5184 follows 0.12391E-003 -0.17626E-003 0.37440E-002 -0.73418E-002 -0.43798E-001 0.49519E-002 0.14953E-002 0.20774E-002 -0.22890E-002 - 0.11235E-002 0.53678E-004 0.34160E-004 + 0.11235E-002 0.53679E-004 0.34160E-004 -0.92654E-003 0.75587E-003 -0.15990E-002 0.13713E-002 -0.14112E-002 0.18715E-002 -0.44715E-002 0.85039E-002 0.41635E-001 @@ -1534,13 +1534,13 @@ object 3 class array type double rank 0 items 5184 follows 0.11901E-002 -0.16300E-002 0.17072E-002 -0.20384E-002 0.41606E-002 -0.83538E-002 -0.36935E-001 -0.18397E-003 0.75164E-003 - 0.32749E-004 -0.54313E-004 -0.55384E-003 + 0.32749E-004 -0.54314E-004 -0.55384E-003 0.59897E-003 -0.55366E-003 -0.85402E-003 0.60344E-003 -0.12434E-002 0.99286E-003 -0.13524E-002 0.82954E-003 -0.21224E-002 0.41911E-002 0.38989E-001 -0.21565E-002 0.91862E-003 -0.97115E-003 0.27219E-003 - 0.52312E-005 -0.71291E-003 0.34833E-003 + 0.52313E-005 -0.71291E-003 0.34833E-003 -0.48047E-003 0.23123E-003 -0.44657E-003 0.33067E-003 -0.41250E-003 0.10632E-003 -0.22842E-002 0.73852E-002 0.61030E-002 @@ -1574,7 +1574,7 @@ object 3 class array type double rank 0 items 5184 follows 0.99674E-002 -0.24989E-002 0.30342E-003 -0.53277E-003 0.79955E-003 -0.21966E-003 -0.59661E-003 0.35264E-003 -0.65872E-004 - 0.11436E-002 0.38480E-003 -0.35781E-002 + 0.11436E-002 0.38479E-003 -0.35781E-002 0.36223E-002 -0.75229E-002 0.15451E-001 0.40636E-002 -0.14021E-001 0.68264E-002 -0.25865E-002 0.28621E-002 -0.14937E-002 @@ -1607,7 +1607,7 @@ object 3 class array type double rank 0 items 5184 follows -0.72048E-002 0.52170E-002 -0.32634E-002 -0.19081E-002 0.22332E-002 -0.24117E-002 0.23217E-002 0.50866E-003 -0.17204E-002 - -0.75871E-002 0.73309E-002 0.25632E-005 + -0.75871E-002 0.73309E-002 0.25651E-005 -0.21416E-001 -0.12367E-001 0.49953E-002 -0.41626E-002 0.41883E-002 -0.30311E-002 0.19037E-002 0.31388E-003 -0.26396E-003 @@ -1640,8 +1640,8 @@ object 3 class array type double rank 0 items 5184 follows 0.33179E-003 -0.34087E-003 0.23211E-003 -0.32071E-003 -0.56331E-004 0.14792E-003 -0.41476E-003 -0.10262E-002 -0.21101E-001 - -0.94099E-004 -0.10972E-002 0.73413E-003 - -0.43772E-003 -0.10434E-003 0.72385E-004 + -0.94100E-004 -0.10972E-002 0.73413E-003 + -0.43772E-003 -0.10434E-003 0.72384E-004 -0.27691E-003 -0.27499E-003 0.40064E-003 -0.26074E-003 0.46773E-003 -0.13622E-003 0.20913E-003 -0.18338E-003 0.73660E-003 @@ -1683,7 +1683,7 @@ object 3 class array type double rank 0 items 5184 follows 0.38887E-003 -0.10225E-003 -0.35480E-003 0.21989E-002 -0.46306E-002 0.27804E-001 -0.46260E-001 0.99268E-001 -0.12849E-001 - 0.69339E-002 -0.28353E-002 0.32796E-002 + 0.69340E-002 -0.28353E-002 0.32796E-002 -0.19358E-002 0.10950E-002 -0.18272E-003 0.56051E-002 -0.38298E-002 0.13655E-003 0.13715E-002 -0.54991E-002 0.85791E-002 diff --git AmberTools/test/nab/rismion.nab AmberTools/test/nab/rismion.nab new file mode 100644 index 0000000..bcb1bc3 --- /dev/null +++ AmberTools/test/nab/rismion.nab @@ -0,0 +1,22 @@ +molecule m; +float m_xyz[dynamic], f_xyz[dynamic], v_xyz[dynamic]; +float dgrad, fret; +int ier, i; + +m = getpdb("Na+.pdb"); +readparm(m, "Na+.parm7"); +allocate m_xyz[3*m.natoms]; +allocate f_xyz[3*m.natoms]; +allocate v_xyz[3*m.natoms]; +mm_options( "e_debug=0, ntpr=1, ntpr_md=1, cut=999.0, dt=0.001, rattle=0, tempi=0, zerov=0"); +mm_options( "rism=1, apply_rism_force=0"); +mm_options( "buffer=12, solvcut=999"); +mm_options( "progress=1, xvvfile=../rism1d/spc/spc-nacl.xvv.save"); +mme_init( m, NULL, "::Z", m_xyz, NULL); + +setxyz_from_mol( m, NULL, m_xyz ); + +ier = md(3*m.natoms,0,m_xyz,f_xyz,v_xyz, mme ); + +if(mytaskid==0) + printf( "md returns %d\n", ier ); diff --git AmberTools/test/nab/rismion.out.check AmberTools/test/nab/rismion.out.check new file mode 100644 index 0000000..38f642a --- /dev/null +++ AmberTools/test/nab/rismion.out.check @@ -0,0 +1,24 @@ +Reading parm file (Na+.parm7) +title: + + mm_options: e_debug=0 + mm_options: ntpr=1 + mm_options: ntpr_md=1 + mm_options: cut=999.0 + mm_options: dt=0.001 + mm_options: rattle=0 + mm_options: tempi=0 + mm_options: zerov=0 + mm_options: rism=1 + mm_options: apply_rism_force=0 + mm_options: buffer=12 + mm_options: solvcut=999 + mm_options: progress=1 + mm_options: xvvfile=../rism1d/spc/spc-nacl.xvv.save +| New format PARM file being parsed. +| Version = 0.001 Date = 04:06:10 Time = 16:41:39 + iter Total bad vdW elect nonpolar genBorn frms + nblist_box, number of atoms= 1 + nblist_box, number of pairs= 0 +ff: 0 -73.97 0.00 0.00 0.00 0.00 -73.97 0.00e+00 +md returns 0 ----------------------------------------------------------------------------- Workarounds: none ********> bugfix 6 Author: Dave Case (reported by Kevin Wiehe) Date: 2010/06/29 Programs: NAB Description: When gbsa=1 and mme2() is called, some experimental code for nonpolar contributions is included, which is both undocumented an incorrect. This patch also prevents users from using values for gbsa other that 0 or 1. To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.6 --------------------------------------------------------------------------- --- AmberTools/src/sff/sff2.c +++ AmberTools/src/sff/sff2.c @@ -4557,7 +4557,7 @@ REAL_T egb2(INT_T * lpears, INT_T * upears, INT_T ** pearlist, qi2h = 0.5 * qi * qi; qid2h = qi2h * dielfac; - if ((gbsa == 1) || (gbsa == 4) || (gbsa == 5)) { + if ((gbsa == 4) || (gbsa == 5)) { vdwdenom = 1.0 / (ri + rwater); vdwterm = alphanp * (prm->Gvdw[i]) * vdwdenom * vdwdenom * --- AmberTools/src/sff/mm_options.l +++ AmberTools/src/sff/mm_options.l @@ -75,7 +75,7 @@ use_lower_tri[=\ ][01] { ECHO; use_lower_tri = atoi( &yytext[14] ); } dynamic_loops[=\ ][01] { ECHO; dynamic_loops = atoi( &yytext[14] ); } static_arrays[=\ ][01] { ECHO; static_arrays = atoi( &yytext[14] ); } blocksize[=\ ][0-9]+ { ECHO; blocksize = atoi( &yytext[10] ); } -gbsa[=\ ][0-5] { ECHO; gbsa = atoi( &yytext[5] ); } +gbsa[=\ ][01] { ECHO; gbsa = atoi( &yytext[5] ); } dim[=\ ][34] { ECHO; dim = atoi( &yytext[4] ); } rism[=\ ][01] { ECHO; rismData.rism = atoi( &yytext[5] ); } ----------------------------------------------------------------------------- Workarounds: none ********> bugfix 7 Author: Mengjuei Hsieh and Ray Luo Date: 2010/07/23 Programs: PBSA Description: Due to the new default value of cutres since Amber11/AT1.4, it's possible a number of maximal numbers in PBSA to encounter integer overflow. This fix protects most of the variables in the setup stage. To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.7 --------------------------------------------------------------------------- --- AmberTools/src/pbsa/pb_init.f +++ AmberTools/src/pbsa/pb_init.f @@ -153,6 +153,7 @@ subroutine pb_init(ifcap,natom,nres,ntypes,nbonh,nbona,ipres,iac,ico,numex,natex integer ires, iatm, jatm, maxmax, ic, i, j, jp, idum integer alloc_err(64) + _REAL_ maxnbr_l, maxnba_l _REAL_ rinchk _REAL_ ucrgh(natom), ucrga(natom) character (len=4) :: residue, resid(natom) @@ -207,16 +208,24 @@ subroutine pb_init(ifcap,natom,nres,ntypes,nbonh,nbona,ipres,iac,ico,numex,natex ! allocate pb nblists - maxnba = natom * ( sqrt( max(cutnb,cutsa,cutfd) ) )**3 / 3.0d0 - maxnbr = natom * ( sqrt( cutres ) + 3.0d0 )**3 / 3.0d0 + maxnba_l = dble(natom) * ( sqrt( max(cutnb,cutsa,cutfd) ) )**3 / 3.0d0 + maxnbr_l = dble(natom) * ( sqrt( cutres ) + 3.0d0 )**3 / 3.0d0 if ( natom >= 65536 ) then write(6,'(a)') "PB Warnning: natom**2 exceeds integer limit (2147483647)." maxmax = 2147483647 else maxmax = ceiling(dble(natom)/2*dble(natom)) - endif - if ( maxnba > maxmax ) maxnba = maxmax - if ( maxnbr > maxmax ) maxnbr = maxmax + end if + if ( maxnbr_l > maxmax ) then + maxnbr = maxmax + else + maxnbr = int(maxnbr_l) + end if + if ( maxnba_l > maxmax ) then + maxnba = maxmax + else + maxnba = int(maxnba_l) + end if allocate( iar1pb (6,0:natom), stat = alloc_err(24) ) allocate( iprshrt( maxnba ), stat = alloc_err(25) ) ----------------------------------------------------------------------------- Workarounds: none ********> bugfix 8 Author: Andreas W Goetz Date: 2010/08/04 Programs: SQM Description: Fix DFTB in SQM which did not work. DFTB has been tested for geometry optimization of NMA. It yields the same result as sander (E = -1220.8413). This bugfix also includes new tests for DFTB in SQM. To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.8 --------------------------------------------------------------------------- diff --git AmberTools/src/sqm/sqm.f AmberTools/src/sqm/sqm.f index 390c73c..ad91121 100644 --- AmberTools/src/sqm/sqm.f +++ AmberTools/src/sqm/sqm.f @@ -13,7 +13,7 @@ program sqm implicit none - _REAL_ x(3000), f(3000), escf, reff(1000), onereff(1000), work(18000), scf_mchg(1000) + _REAL_ x(3000), f(3000), escf, reff(1000), onereff(1000), work(18000) character(len=8) atnam(1000) _REAL_ born_radii(1000), one_born_radii(1000) _REAL_ intdiel, extdiel, Arad @@ -104,20 +104,23 @@ program sqm call allocate_qmgb(qmmm_struct%nquant_nlink) allocate( qmmm_struct%dxyzqm(3, qmmm_struct%nquant_nlink), stat = ier ) - REQUIRE(ier == 0) !Deallocated in deallocate qmmm + REQUIRE(ier == 0) + + allocate ( qm2_struct%scf_mchg(qmmm_struct%nquant_nlink), stat = ier ) + REQUIRE(ier == 0) if (maxcyc < 1) then ! ------------------------ ! Single point calculation ! ------------------------ call sqm_energy(natom, x, escf, born_radii, one_born_radii, & - intdiel, extdiel, Arad, scf_mchg ) + intdiel, extdiel, Arad, qm2_struct%scf_mchg ) else ! --------------------- ! Geometry optimization ! --------------------- call xmin(natom, x, f, escf, xmin_iter, maxcyc, born_radii, & - one_born_radii, intdiel, extdiel, Arad, scf_mchg, grms_tol, ntpr) + one_born_radii, intdiel, extdiel, Arad, qm2_struct%scf_mchg, grms_tol, ntpr) end if ! ---------------- @@ -140,7 +143,7 @@ program sqm write(6,*) '' call qm2_print_charges(1,qmmm_nml%dftb_chg,qmmm_struct%nquant_nlink, & - scf_mchg,qmmm_struct%iqm_atomic_numbers) + qm2_struct%scf_mchg,qmmm_struct%iqm_atomic_numbers) write(6,*) '' write(6,*) 'Final Structure' @@ -150,6 +153,12 @@ program sqm write(6,*) ' --------- Calculation Completed ----------' write(6,*) + deallocate( qmmm_struct%dxyzqm, stat = ier ) + REQUIRE(ier == 0) + + deallocate ( qm2_struct%scf_mchg, stat = ier ) + REQUIRE(ier == 0) + call mexit(6,0) end program sqm diff --git AmberTools/test/check_slko_files.x AmberTools/test/check_slko_files.x new file mode 100755 index 0000000..a24edba --- /dev/null +++ AmberTools/test/check_slko_files.x @@ -0,0 +1,14 @@ +#!/bin/csh -f +#checks if cc.spl file exists - if it does then it +#assumes that all slko files are installed. + +if( -r $AMBERHOME/dat/slko/C-C.skf ) then + #Exists + exit(0) +else + echo "DFTB SLKO files not found - Skipping DFTB tests..." + echo "" + exit(1) +endif + + diff --git AmberTools/test/sqm/nma/Run AmberTools/test/sqm/nma/Run index 190a0ec..5d3019f 100755 --- AmberTools/test/sqm/nma/Run +++ AmberTools/test/sqm/nma/Run @@ -3,8 +3,19 @@ set SQM = ../../../exe/sqm set SPDIFF = ../../dacdif set GODIFF = "../../dacdif -a 0.01" -set SPTESTS = (nma.pm3.sp nma.pm6.sp) -set GOTESTS = (nma.pm3.go nma.pm6.go) + +# check if slko files for DFTB are installed +../../check_slko_files.x +if( $status > 0) then + # no slko files - do not run DFTB tests + set SPTESTS = (nma.pm3.sp nma.pm6.sp) + set GOTESTS = (nma.pm3.go nma.pm6.go) +else + # slko files present - run DFTB tests + set SPTESTS = (nma.pm3.sp nma.pm6.sp nma.dftb.sp) + set GOTESTS = (nma.pm3.go nma.pm6.go nma.dftb.go) +endif + # single point tests foreach i ($SPTESTS) diff --git AmberTools/test/sqm/nma/nma.dftb.go.in AmberTools/test/sqm/nma/nma.dftb.go.in new file mode 100644 index 0000000..4baa902 --- /dev/null +++ AmberTools/test/sqm/nma/nma.dftb.go.in @@ -0,0 +1,30 @@ +Run DFTB geometry optimization for NMA + &qmmm + qm_theory = 'DFTB', + qmcharge = 0, + ! SCF settings + scfconv = 1.0d-10, ! kcal/mol + errconv = 1.d-06, ! au + tight_p_conv = 0, + diag_routine = 1, + itrmax = 100, + ! Geometry optimization settings + maxcyc = 100, + grms_tol = 0.001, ! kcal/(mol*A) + ! Output + ntpr = 101, + verbosity = 0, + / + 6 C -0.767000 3.380000 4.245000 + 6 C -1.809707 2.570219 4.710852 + 7 N -2.661673 2.646098 3.869189 + 6 C -3.662846 1.855199 3.619926 + 8 O -1.634379 2.116691 5.584678 + 1 H 0.218271 3.164467 4.684075 + 1 H -0.578839 3.210298 3.174581 + 1 H -1.024346 4.421330 4.488732 + 1 H -2.569216 3.204198 3.074324 + 1 H -3.347225 0.824359 3.812610 + 1 H -4.529359 1.998602 4.311686 + 1 H -4.036138 1.906340 2.552627 + diff --git AmberTools/test/sqm/nma/nma.dftb.go.out.save AmberTools/test/sqm/nma/nma.dftb.go.out.save new file mode 100644 index 0000000..2fa9f32 --- /dev/null +++ AmberTools/test/sqm/nma/nma.dftb.go.out.save @@ -0,0 +1,81 @@ + -------------------------------------------------------- + AMBER SQM VERSION 1.4 + + By + Ross C. Walker, Michael F. Crowley, Scott Brozell, + Tim Giese, Andreas W. Goetz and David A. Case + + -------------------------------------------------------- + + +-------------------------------------------------------------------------------- + QM CALCULATION INFO +-------------------------------------------------------------------------------- + +| QMMM: Citation for AMBER QMMM Run: +| QMMM: R.C. Walker, M.F. Crowley and D.A. Case, J. COMP. CHEM. 29:1019, 2008 + +| QMMM: DFTB Calculation - Additional citation for AMBER DFTB QMMM Run: +| QMMM: Seabra, G.M., Walker, R.C. et al., J. PHYS. CHEM. A., 111, 5655, (2007) + + +QMMM: SINGLET STATE CALCULATION +QMMM: RHF CALCULATION, NO. OF DOUBLY OCCUPIED LEVELS = 15 + +| QMMM: *** SCF convergence criteria *** +| QMMM: Energy change : 0.1D-09 kcal/mol +| QMMM: Error matrix |FP-PF| : 0.1D-05 au +| QMMM: Density matrix change : 0.5D-06 +| QMMM: Maximum number of SCF cycles : 100 + DFTB: Number of atom types = 4 + + Parameter files: + TYP (AT) TYP (AT) SK integral FILE +| 1 1 (C ) 1 (C ) /Users/andi/sources/amber/dat/slko/C-C.skf +| 2 1 (C ) 2 (N ) /Users/andi/sources/amber/dat/slko/C-N.skf +| 3 1 (C ) 3 (O ) /Users/andi/sources/amber/dat/slko/C-O.skf +| 4 1 (C ) 4 (H ) /Users/andi/sources/amber/dat/slko/C-H.skf +| 5 2 (N ) 1 (C ) /Users/andi/sources/amber/dat/slko/N-C.skf +| 6 2 (N ) 2 (N ) /Users/andi/sources/amber/dat/slko/N-N.skf +| 7 2 (N ) 3 (O ) /Users/andi/sources/amber/dat/slko/N-O.skf +| 8 2 (N ) 4 (H ) /Users/andi/sources/amber/dat/slko/N-H.skf +| 9 3 (O ) 1 (C ) /Users/andi/sources/amber/dat/slko/O-C.skf +| 10 3 (O ) 2 (N ) /Users/andi/sources/amber/dat/slko/O-N.skf +| 11 3 (O ) 3 (O ) /Users/andi/sources/amber/dat/slko/O-O.skf +| 12 3 (O ) 4 (H ) /Users/andi/sources/amber/dat/slko/O-H.skf +| 13 4 (H ) 1 (C ) /Users/andi/sources/amber/dat/slko/H-C.skf +| 14 4 (H ) 2 (N ) /Users/andi/sources/amber/dat/slko/H-N.skf +| 15 4 (H ) 3 (O ) /Users/andi/sources/amber/dat/slko/H-O.skf +| 16 4 (H ) 4 (H ) /Users/andi/sources/amber/dat/slko/H-H.skf + +-------------------------------------------------------------------------------- + RESULTS +-------------------------------------------------------------------------------- + + ... geometry converged ! + + Heat of formation = -1220.84132946 kcal/mol ( -52.93965264 eV) + Total SCF energy = -8463.39103876 kcal/mol ( -367.00017513 eV) + + Atomic Charges for Step 1 : + Atom Element Mulliken Charge + 1 C -0.279 + 2 C 0.493 + 3 N -0.250 + 4 C -0.073 + 5 O -0.507 + 6 H 0.096 + 7 H 0.073 + 8 H 0.073 + 9 H 0.186 + 10 H 0.097 + 11 H 0.045 + 12 H 0.045 + Total Mulliken Charge = 0.000 + + + Final Structure + + + --------- Calculation Completed ---------- + diff --git AmberTools/test/sqm/nma/nma.dftb.sp.in AmberTools/test/sqm/nma/nma.dftb.sp.in new file mode 100644 index 0000000..45ac9e0 --- /dev/null +++ AmberTools/test/sqm/nma/nma.dftb.sp.in @@ -0,0 +1,30 @@ +Run PM3 single point calculation for NMA + &qmmm + qm_theory = 'DFTB', + qmcharge = 0, + ! SCF settings + scfconv = 1.0d-10, ! kcal/mol + errconv = 1.d-06, ! au + tight_p_conv = 0, + diag_routine = 1, + itrmax = 100, + ! Geometry optimization settings + maxcyc = 0, + grms_tol = 0.02, ! kcal/(mol*A) + ! Output + ntpr = 10, + verbosity = 0, + / + 6 C -0.767000 3.380000 4.245000 + 6 C -1.809707 2.570219 4.710852 + 7 N -2.661673 2.646098 3.869189 + 6 C -3.662846 1.855199 3.619926 + 8 O -1.634379 2.116691 5.584678 + 1 H 0.218271 3.164467 4.684075 + 1 H -0.578839 3.210298 3.174581 + 1 H -1.024346 4.421330 4.488732 + 1 H -2.569216 3.204198 3.074324 + 1 H -3.347225 0.824359 3.812610 + 1 H -4.529359 1.998602 4.311686 + 1 H -4.036138 1.906340 2.552627 + diff --git AmberTools/test/sqm/nma/nma.dftb.sp.out.save AmberTools/test/sqm/nma/nma.dftb.sp.out.save new file mode 100644 index 0000000..1cf51f2 --- /dev/null +++ AmberTools/test/sqm/nma/nma.dftb.sp.out.save @@ -0,0 +1,111 @@ + -------------------------------------------------------- + AMBER SQM VERSION 1.4 + + By + Ross C. Walker, Michael F. Crowley, Scott Brozell, + Tim Giese, Andreas W. Goetz and David A. Case + + -------------------------------------------------------- + + +-------------------------------------------------------------------------------- + QM CALCULATION INFO +-------------------------------------------------------------------------------- + +| QMMM: Citation for AMBER QMMM Run: +| QMMM: R.C. Walker, M.F. Crowley and D.A. Case, J. COMP. CHEM. 29:1019, 2008 + +| QMMM: DFTB Calculation - Additional citation for AMBER DFTB QMMM Run: +| QMMM: Seabra, G.M., Walker, R.C. et al., J. PHYS. CHEM. A., 111, 5655, (2007) + + +QMMM: SINGLET STATE CALCULATION +QMMM: RHF CALCULATION, NO. OF DOUBLY OCCUPIED LEVELS = 15 + +| QMMM: *** SCF convergence criteria *** +| QMMM: Energy change : 0.1D-09 kcal/mol +| QMMM: Error matrix |FP-PF| : 0.1D-05 au +| QMMM: Density matrix change : 0.5D-06 +| QMMM: Maximum number of SCF cycles : 100 + DFTB: Number of atom types = 4 + + Parameter files: + TYP (AT) TYP (AT) SK integral FILE +| 1 1 (C ) 1 (C ) /Users/andi/sources/amber/dat/slko/C-C.skf +| 2 1 (C ) 2 (N ) /Users/andi/sources/amber/dat/slko/C-N.skf +| 3 1 (C ) 3 (O ) /Users/andi/sources/amber/dat/slko/C-O.skf +| 4 1 (C ) 4 (H ) /Users/andi/sources/amber/dat/slko/C-H.skf +| 5 2 (N ) 1 (C ) /Users/andi/sources/amber/dat/slko/N-C.skf +| 6 2 (N ) 2 (N ) /Users/andi/sources/amber/dat/slko/N-N.skf +| 7 2 (N ) 3 (O ) /Users/andi/sources/amber/dat/slko/N-O.skf +| 8 2 (N ) 4 (H ) /Users/andi/sources/amber/dat/slko/N-H.skf +| 9 3 (O ) 1 (C ) /Users/andi/sources/amber/dat/slko/O-C.skf +| 10 3 (O ) 2 (N ) /Users/andi/sources/amber/dat/slko/O-N.skf +| 11 3 (O ) 3 (O ) /Users/andi/sources/amber/dat/slko/O-O.skf +| 12 3 (O ) 4 (H ) /Users/andi/sources/amber/dat/slko/O-H.skf +| 13 4 (H ) 1 (C ) /Users/andi/sources/amber/dat/slko/H-C.skf +| 14 4 (H ) 2 (N ) /Users/andi/sources/amber/dat/slko/H-N.skf +| 15 4 (H ) 3 (O ) /Users/andi/sources/amber/dat/slko/H-O.skf +| 16 4 (H ) 4 (H ) /Users/andi/sources/amber/dat/slko/H-H.skf + + QMMM: QM Region Cartesian Coordinates (*=link atom) + QMMM: QM_NO. MM_NO. ATOM X Y Z + QMMM: 1 1 C -0.7670 3.3800 4.2450 + QMMM: 2 2 C -1.8097 2.5702 4.7109 + QMMM: 3 3 N -2.6617 2.6461 3.8692 + QMMM: 4 4 C -3.6628 1.8552 3.6199 + QMMM: 5 5 O -1.6344 2.1167 5.5847 + QMMM: 6 6 H 0.2183 3.1645 4.6841 + QMMM: 7 7 H -0.5788 3.2103 3.1746 + QMMM: 8 8 H -1.0243 4.4213 4.4887 + QMMM: 9 9 H -2.5692 3.2042 3.0743 + QMMM: 10 10 H -3.3472 0.8244 3.8126 + QMMM: 11 11 H -4.5294 1.9986 4.3117 + QMMM: 12 12 H -4.0361 1.9063 2.5526 + +-------------------------------------------------------------------------------- + RESULTS +-------------------------------------------------------------------------------- + + + Heat of formation = -1039.27301701 kcal/mol ( -45.06625979 eV) + Total SCF energy = -8281.82272631 kcal/mol ( -359.12678229 eV) + Electronic energy = -8895.69306749 kcal/mol ( -385.74619780 eV) + Core-core repulsion = 613.87034117 kcal/mol ( 26.61941551 eV) + + Atomic Charges for Step 1 : + Atom Element Mulliken Charge + 1 C -0.347 + 2 C 0.560 + 3 N -0.202 + 4 C -0.066 + 5 O -0.439 + 6 H 0.077 + 7 H 0.048 + 8 H 0.072 + 9 H 0.187 + 10 H 0.044 + 11 H 0.029 + 12 H 0.037 + Total Mulliken Charge = 0.000 + + + Final Structure + + QMMM: QM Region Cartesian Coordinates (*=link atom) + QMMM: QM_NO. MM_NO. ATOM X Y Z + QMMM: 1 1 C -0.7670 3.3800 4.2450 + QMMM: 2 2 C -1.8097 2.5702 4.7109 + QMMM: 3 3 N -2.6617 2.6461 3.8692 + QMMM: 4 4 C -3.6628 1.8552 3.6199 + QMMM: 5 5 O -1.6344 2.1167 5.5847 + QMMM: 6 6 H 0.2183 3.1645 4.6841 + QMMM: 7 7 H -0.5788 3.2103 3.1746 + QMMM: 8 8 H -1.0243 4.4213 4.4887 + QMMM: 9 9 H -2.5692 3.2042 3.0743 + QMMM: 10 10 H -3.3472 0.8244 3.8126 + QMMM: 11 11 H -4.5294 1.9986 4.3117 + QMMM: 12 12 H -4.0361 1.9063 2.5526 + + --------- Calculation Completed ---------- + --------------------------------------------------------------------------- Workarounds: none ********> bugfix 9 cd $AMBERHOME patch -p0 -N < bugfix 9 Author: Daniel R. Roe Date: 2010-07-16 Programs: ptraj Description: Fixes reading of hex values on big endian machines which prevented correct identification of files and/or reading incorrect number of frames in gzipped trajectory files. Use unsigned char instead of uint8_t for compatibility with obsolete compilers. Also fix calculation of # frames in Amber Trajectories by switching to long long int (to be consistent with the stat struct) and clean up the bitwise arithmetic in gzipFileSize(). Fixes two bugs in clustering code: 1) If no atoms are selected in RMS mask resulting NULL mask, segfault would occur and 2) Pointer was being compared like an integer; the check would result in no initialization and a segfault. ----------------------------------------------------------------------------- --- AmberTools/src/ptraj/ptraj.c 2010-07-16 20:27:16.000000000 -0400 +++ AmberTools/src/ptraj/ptraj.c 2010-07-16 20:56:55.000000000 -0400 @@ -2058,7 +2058,8 @@ int lines_per_set; int start = 1; int stop = 1; - int frame_lines, frame_size, title_size, seekable, file_size; + int frame_lines, title_size, seekable; + long long int file_size, frame_size; long int endoffset; float *binposScratch; FILE *fp; @@ -2417,20 +2418,29 @@ // Determine Uncompressed File Size for Nframes calculation file_size=0; - if (trajInfo->compressType==1) // Gzip + if (trajInfo->compressType==1) // Gzip file_size=gzipFileSize(filename); else if (trajInfo->compressType==2) // Bzip2 file_size=bzip2FileSize(filename); else if (trajInfo->compressType==3) // Zip file_size=zipFileSize(filename); - if (file_size<0) return NULL; + if (file_size<0) { + fprintf(stdout, + "ERROR in %s: Could not calculate uncompressed file size for %s\n", + ROUTINE, filename); + return NULL; + } if (file_size==0) file_size=frame_stat.st_size; if (prnlev>0) - fprintf(stdout,"[%i] Title offset %u Frame Size %u File size %lu\n", + fprintf(stdout,"[%i] Title offset %u Frame Size %u File size %lli\n", worldrank,trajInfo->titleSize,trajInfo->frameSize,file_size); - trajInfo->Nframes = (int) ((file_size - trajInfo->titleSize) / trajInfo->frameSize); - if (((file_size - trajInfo->titleSize) % (trajInfo->frameSize)) == 0) { + frame_size = (long long int) trajInfo->titleSize; + file_size = file_size - frame_size; // Subtract title size from file total size. + frame_size = (long long int) trajInfo->frameSize; + trajInfo->Nframes = (int) (file_size / frame_size); + if (prnlev>0) fprintf(stdout," File has %i frames.\n",trajInfo->Nframes); + if ( (file_size % frame_size) == 0 ) { seekable = 1; stop = trajInfo->Nframes; } else { --- AmberTools/src/ptraj/io.c 2010-07-01 00:41:40.000000000 -0400 +++ AmberTools/src/ptraj/io.c 2010-07-16 21:51:04.000000000 -0400 @@ -673,14 +673,15 @@ } } -/* DAN ROE: - * gzipFileSize() - * Return the uncompressed size in bytes of gzipped file by peeking at the - * last 4 bytes. +/* gzipFileSize() + * DRR: Return the uncompressed size in bytes of gzipped file by peeking + * at the last 4 bytes. + * NOTE: long long int should be equivalent to off_t. */ -int gzipFileSize(char *filename) { +long long int gzipFileSize(char *filename) { FILE *infile; - int b1,b2,b3,b4,val; + unsigned char b1,b2,b3,b4; + long long int val,temp; if (filename==NULL) return -1; if ( (infile = fopen(filename,"rb"))==NULL ) { @@ -697,21 +698,35 @@ fread(&b2,1,1,infile); fread(&b1,1,1,infile); - val = (b1 << 24) | (b2 << 16) + (b3 << 8) + b4; + val = 0; + temp = (long long int) b1; + temp <<= 24; + val = val | temp; + temp = (long long int) b2; + temp <<= 16; + val = val | temp; + temp = (long long int) b3; + temp <<= 8; + val = val | temp; + temp = (long long int) b4; + val = val | temp; + + //val = (b1 << 24) | (b2 << 16) + (b3 << 8) + b4; fclose(infile); - if (prnlev>0) fprintf(stdout,"gzipFileSize: Uncompressed size of %s: %i\n",filename,val); + if (prnlev>0) fprintf(stdout,"gzipFileSize: Uncompressed size of %s: %lli\n",filename,val); return val; } -/* DAN ROE: + +/* * bzip2FileSize() - * Return the uncompressed size of bzip2 file in bytes by counting all - * characters using bzcat and wc. + * DRR: Return the uncompressed size of bzip2 file in bytes by counting + * all characters using bzcat and wc. */ -int bzip2FileSize(char *filename) { - int val; +long long int bzip2FileSize(char *filename) { + long long int val; char *command; FILE *pipe; @@ -724,20 +739,21 @@ fprintf(stdout," Check that bzcat and wc are present on your system.\n"); return -1; } - fscanf(pipe,"%i",&val); + fscanf(pipe,"%lli",&val); pclose(pipe); - if (prnlev>0) fprintf(stdout,"bzip2FileSize: Uncompressed size of %s: %i\n",filename,val); + if (prnlev>0) fprintf(stdout,"bzip2FileSize: Uncompressed size of %s: %lli\n",filename,val); return val; } -/* DAN ROE: + +/* * zipFileSize() - * Return the uncompressed size of zip file in bytes by counting all - * characters using unzip and wc. + * DRR: Return the uncompressed size of zip file in bytes by counting + * all characters using unzip and wc. */ -int zipFileSize(char *filename) { - int val; +long long int zipFileSize(char *filename) { + long long int val; char *command; FILE *pipe; @@ -750,10 +766,10 @@ fprintf(stdout," Check that unzip and wc are present on your system.\n"); return -1; } - fscanf(pipe,"%i",&val); + fscanf(pipe,"%lli",&val); pclose(pipe); - if (prnlev>0) fprintf(stdout,"zipFileSize: Uncompressed size of %s: %i\n",filename,val); + if (prnlev>0) fprintf(stdout,"zipFileSize: Uncompressed size of %s: %lli\n",filename,val); return val; } @@ -774,7 +790,7 @@ * -2: Internal error */ int id_Filesig(char *filename, FILE *infile) { - int *h; + unsigned char *h; int i, type; /* Check that either filename or infile is specified, but not both */ @@ -797,7 +813,7 @@ rewind(infile); /* Read first 3 bytes from file */ - h=(int*) calloc(3,sizeof(int)); + h=(unsigned char*) calloc(3,sizeof(unsigned char)); fread(h,1,1,infile); fread(h+1,1,1,infile); fread(h+2,1,1,infile); --- AmberTools/src/ptraj/io.h 2010-07-16 20:26:17.000000000 -0400 +++ AmberTools/src/ptraj/io.h 2010-07-16 20:26:56.000000000 -0400 @@ -76,9 +76,9 @@ extern void doSystem(char *); extern char * promptToOpenFile( FILE **, char *, char *, char *); -extern int gzipFileSize(char *); -extern int bzip2FileSize(char *); -extern int zipFileSize(char *); +extern long long int gzipFileSize(char *); +extern long long int bzip2FileSize(char *); +extern long long int zipFileSize(char *); extern int id_Filesig(char *,FILE *); extern int openFile( FILE **, char *, char *); extern int promptUserResponse(FILE *, FILE *, char *, char *, int); @@ -97,9 +97,9 @@ extern void doSystem(); extern char * promptToOpenFile(); -extern int gzipFileSize(); -extern int bzip2FileSize(); -extern int zipFileSize(); +extern long long int gzipFileSize(); +extern long long int bzip2FileSize(); +extern long long int zipFileSize(); extern int id_Filesig(); extern int openFile(); extern int promptUserResponse(); --- AmberTools/src/ptraj/actions.c 2010-07-26 09:30:41.462276836 -0400 +++ AmberTools/src/ptraj/actions.c 2010-07-26 09:31:36.767408649 -0400 @@ -3655,6 +3655,8 @@ { action->mask = processAtomMask("*", action->state); } + if (action->mask==NULL) + return INVALID_ARGUMENTS_RETURN_CODE; /* Create a new "substate" trajInfo->state containing only some atoms: */ modifyStateByMask(&trajInfo->state, &action->state, action->mask, 0); trajInfo->atoms = trajInfo->state->atoms; --- AmberTools/src/ptraj/cluster.c 2010-07-26 22:48:49.998157908 -0400 +++ AmberTools/src/ptraj/cluster.c 2010-07-26 22:51:04.023535647 -0400 @@ -4041,7 +4041,7 @@ OutputTrajInfo = (trajectoryInfo*)action->carg2; } - if (!FirstOutputFlag) + if (FirstOutputFlag==NULL) { FirstOutputFlag = (int*)SafeMalloc(__FILE__, __LINE__, sizeof(int) * This->ClusterCount); memset(FirstOutputFlag, 1, sizeof(int) * This->ClusterCount); --------------------------------------------------------------------------- Workarounds: none ********> bugfix 10 cd $AMBERHOME patch -p0 -N < bugfix.10 Author: Jason Swails Date: 2010-08-31 Programs: nab Description: If a dihedral parameter had a periodicity of 6, it would not be recognized, but without a "break;" statement it would push on to default: case on some (if not all) systems, causing the program to exit even though it was a valid choice, with the error message: bad periodicity: 6 ----------------------------------------------------------------------------- diff --git AmberTools/src/sff/sff2.c AmberTools/src/sff/sff2.c index 3a196b8..f45d1d3 100644 --- AmberTools/src/sff/sff2.c +++ AmberTools/src/sff/sff2.c @@ -1384,6 +1384,7 @@ REAL_T ephi2(int nphi, int *a1, int *a2, e = ct2 * (ct2 * (ct2 * 32.0 - 48.0) + 18.0) - 1.0; df = ct * (ct2 * (ct2 * 192.0 - 192.0) + 36.0); ddf = ct2 * (ct2 * 960.0 - 576.0) + 36.0; + break; default: fprintf(stderr, "bad periodicity: %d\n", iper); --------------------------------------------------------------------------- Workarounds: none ********> bugfix 11 cd $AMBERHOME patch -p0 -N < bugfix.11 Author: Andreas W Goetz Date: 2010-09-13 Programs: sqm Description: fix d orbitals for DFTB DFTB code did not work with d orbitals Fixed by not checking for parameter value MAX_VALENCE_ORBITALS which is not used by the DFTB code ----------------------------------------------------------------------------- diff --git AmberTools/src/sqm/qm2_load_params_and_allocate.f AmberTools/src/sqm/qm2_load_params_and_allocate.f index 57b43d4..2b6fa63 100644 --- AmberTools/src/sqm/qm2_load_params_and_allocate.f +++ AmberTools/src/sqm/qm2_load_params_and_allocate.f @@ -136,9 +136,12 @@ subroutine qm2_load_params_and_allocate() n_atomic_orb=natomic_orbs(iqm_atomic) if (n_atomic_orb>1) nheavy_atoms=nheavy_atoms+1 ! Check we don't bust any static arrays - if (n_atomic_orb > MAX_VALENCE_ORBITALS) then - write (6,*) 'n_atomic_orb of ',n_atomic_orb,' exceeds max_valence_orbitals of MAX_VALENCE_ORBITALS' - call sander_bomb('qm2_load_params.f','exceeded max','Check qmmm_module.f and parameters.h') + ! DFTB is independent of this and checks are done in qm2_dftb_load_params + if ( .not. qmmm_nml%qmtheory%DFTB ) then + if (n_atomic_orb > MAX_VALENCE_ORBITALS) then + write (6,*) 'n_atomic_orb of ',n_atomic_orb,' exceeds max_valence_orbitals of MAX_VALENCE_ORBITALS' + call sander_bomb('qm2_load_params.f','exceeded max','Check qmmm_module.f and parameters.h') + end if end if qm2_params%natomic_orbs(i)=n_atomic_orb qm2_params%orb_loc(1,i)=qm2_struct%norbs+1 diff --git AmberTools/src/sqm/qmmm_module.f AmberTools/src/sqm/qmmm_module.f index 6bafddd..1745226 100644 --- AmberTools/src/sqm/qmmm_module.f +++ AmberTools/src/sqm/qmmm_module.f @@ -84,7 +84,7 @@ module qmmm_module !--------- SIZE / ARRAY LIMITATIONS ----------------------- ! Locks maximum valence orbitals at 4 = S,P (no D or F - code is not present) - integer, parameter :: MAX_VALENCE_ORBITALS =4 + integer, parameter :: MAX_VALENCE_ORBITALS = 4 integer, parameter :: MAX_VALENCE_DIMENSION = MAX_VALENCE_ORBITALS*(MAX_VALENCE_ORBITALS+1)/2 !---------------------------------------------------------- --------------------------------------------------------------------------- Workarounds: none ********> bugfix 12 cd $AMBERHOME patch -p0 -N < bugfix.12 Author: Daniel R. Roe Date: 2010-09-10 Programs: ptraj Description: Fixes issue where ptraj would segfault when reading an input file that had no EOL. ----------------------------------------------------------------------------- --- AmberTools/src/ptraj/ptraj.c 2010-09-10 09:16:54.442548223 -0400 +++ AmberTools/src/ptraj/ptraj.c 2010-09-10 09:20:16.175692377 -0400 @@ -7165,8 +7165,8 @@ */ argumentStack = NULL; - while ( (bufferp = fgets(buffer, BUFFER_SIZE, infile)) != NULL && - strcmp(bufferp, "go\n") != 0 ) { + while ( (bufferp = fgets(buffer, BUFFER_SIZE, infile)) != NULL ) { + if ( strncmp(bufferp, "go", 2) == 0 ) break; continuation = bufferp; while ( continuation != NULL ) { --------------------------------------------------------------------------- Workarounds: none ********> bugfix 13 Author: Wei Zhang Date: 2010-09-24 Programs: sleap Description: Fixes issues that arise when proteins with disulfide bonds are used with the amoeba force fiels Apply this patch from the $AMBEHROME directory ----------------------------------------------------------------------------- --- AmberTools/src/gleap/plugins/loadpdb.cpp +++ AmberTools/src/gleap/plugins/loadpdb.cpp @@ -31,28 +31,29 @@ namespace amber throw std::runtime_error( "Error: file " + m_file + " doesn't exist" ); } - molecule_ptr pmol( new molecule_t() ); read_pdb( is, *pmol ); string disulf = "auto"; mortenv().get_s("disulfide", disulf); - console_t* pcon = (disulf=="auto") ? NULL : console().get(); + if( disulf!="off" ) + { + console_t* pcon = (disulf=="auto") ? NULL : console().get(); - double disulfcut = 2.1; - string tmp; - if( mortenv().get_s("disulfcut", tmp) ) - { - disulfcut = atof( tmp.c_str() ); - } + double disulfcut = 2.1; + string tmp; + if( mortenv().get_s("disulfcut", tmp) ) + { + disulfcut = atof( tmp.c_str() ); + } - disulfide( *pmol, disulfcut, pcon ); + disulfide( *pmol, disulfcut, pcon ); + } namemap_ptr nmap = content().get_nmap( "_namemap" ); if( nmap != NULL ) { - if( m_action=="loadpdb" ) { mdlize_mdb( *pmol, content() ); diff --git a/dat/leap/lib/amoeba_amino.off b/dat/leap/lib/amoeba_amino.off index 87180a5..677d804 100644 --- dat/leap/lib/amoeba_amino.off +++ dat/leap/lib/amoeba_amino.off @@ -880,23 +880,23 @@ !entry.CYX.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg str "N" "7" 0 1 131072 1 7 -0.435921 "H" "10" 0 1 131072 2 1 0.290077 - "CA" "8" 0 1 131072 3 6 -0.030547 + "CA" "44" 0 1 131072 3 6 -0.030547 "HA" "12" 0 1 131072 4 1 0.132146 - "CB" "" 0 1 131072 5 6 -0.033006 - "HB2" "" 0 1 131072 6 1 0.078951 - "HB3" "" 0 1 131072 7 1 0.078951 - "SG" "" 0 1 131072 8 16 -0.132272 + "CB" "45" 0 1 131072 5 6 -0.033006 + "HB2" "46" 0 1 131072 6 1 0.078951 + "HB3" "46" 0 1 131072 7 1 0.078951 + "SG" "49" 0 1 131072 8 16 -0.132272 "C" "9" 0 1 131072 9 6 0.624788 "O" "11" 0 1 131072 10 8 -0.573167 !entry.CYX.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg "N" "7" 0 -1 0.0 "H" "10" 0 -1 0.0 - "CA" "8" 0 -1 0.0 + "CA" "44" 0 -1 0.0 "HA" "12" 0 -1 0.0 - "CB" "" 0 -1 0.0 - "HB2" "" 0 -1 0.0 - "HB3" "" 0 -1 0.0 - "SG" "" 0 -1 0.0 + "CB" "45" 0 -1 0.0 + "HB2" "46" 0 -1 0.0 + "HB3" "46" 0 -1 0.0 + "SG" "49" 0 -1 0.0 "C" "9" 0 -1 0.0 "O" "11" 0 -1 0.0 !entry.CYX.unit.boundbox array dbl @@ -990,16 +990,16 @@ "H" "10" 0 -1 0.0 "CA" "8" 0 -1 0.0 "HA" "12" 0 -1 0.0 - "CB" "" 0 -1 0.0 - "HB2" "" 0 -1 0.0 - "HB3" "" 0 -1 0.0 - "CG" "" 0 -1 0.0 - "HG2" "" 0 -1 0.0 - "HG3" "" 0 -1 0.0 - "CD" "" 0 -1 0.0 - "OE1" "" 0 -1 0.0 - "OE2" "" 0 -1 0.0 - "HE2" "" 0 -1 0.0 + "CB" "144" 0 -1 0.0 + "HB2" "145" 0 -1 0.0 + "HB3" "145" 0 -1 0.0 + "CG" "146" 0 -1 0.0 + "HG2" "147" 0 -1 0.0 + "HG3" "147" 0 -1 0.0 + "CD" "148" 0 -1 0.0 + "OE1" "149" 0 -1 0.0 + "OE2" "149" 0 -1 0.0 + "HE2" "10" 0 -1 0.0 "C" "9" 0 -1 0.0 "O" "11" 0 -1 0.0 !entry.GLH.unit.boundbox array dbl @@ -2147,21 +2147,21 @@ "H" "10" 0 -1 0.0 "CA" "8" 0 -1 0.0 "HA" "12" 0 -1 0.0 - "CB" "" 0 -1 0.0 - "HB2" "" 0 -1 0.0 - "HB3" "" 0 -1 0.0 - "CG" "" 0 -1 0.0 - "HG2" "" 0 -1 0.0 - "HG3" "" 0 -1 0.0 - "CD" "" 0 -1 0.0 - "HD2" "" 0 -1 0.0 - "HD3" "" 0 -1 0.0 - "CE" "" 0 -1 0.0 - "HE2" "" 0 -1 0.0 - "HE3" "" 0 -1 0.0 - "NZ" "" 0 -1 0.0 - "HZ2" "" 0 -1 0.0 - "HZ3" "" 0 -1 0.0 + "CB" "159" 0 -1 0.0 + "HB2" "160" 0 -1 0.0 + "HB3" "160" 0 -1 0.0 + "CG" "161" 0 -1 0.0 + "HG2" "162" 0 -1 0.0 + "HG3" "162" 0 -1 0.0 + "CD" "163" 0 -1 0.0 + "HD2" "164" 0 -1 0.0 + "HD3" "164" 0 -1 0.0 + "CE" "165" 0 -1 0.0 + "HE2" "166" 0 -1 0.0 + "HE3" "166" 0 -1 0.0 + "NZ" "167" 0 -1 0.0 + "HZ2" "168" 0 -1 0.0 + "HZ3" "168" 0 -1 0.0 "C" "9" 0 -1 0.0 "O" "11" 0 -1 0.0 !entry.LYN.unit.boundbox array dbl diff --git a/dat/leap/lib/amoeba_aminoct.off b/dat/leap/lib/amoeba_aminoct.off index 23e47b7..a43878f 100644 --- dat/leap/lib/amoeba_aminoct.off +++ dat/leap/lib/amoeba_aminoct.off @@ -638,24 +638,24 @@ !entry.CCYX.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg str "N" "7" 0 1 131072 1 7 -0.382100 "H" "10" 0 1 131072 2 1 0.268100 - "CA" "8" 0 1 131072 3 6 -0.131800 + "CA" "44" 0 1 131072 3 6 -0.131800 "HA" "12" 0 1 131072 4 1 0.093800 - "CB" "" 0 1 131072 5 6 -0.194300 - "HB2" "" 0 1 131072 6 1 0.122800 - "HB3" "" 0 1 131072 7 1 0.122800 - "SG" "" 0 1 131072 8 16 -0.052900 + "CB" "45" 0 1 131072 5 6 -0.194300 + "HB2" "46" 0 1 131072 6 1 0.122800 + "HB3" "46" 0 1 131072 7 1 0.122800 + "SG" "49" 0 1 131072 8 16 -0.052900 "C" "192" 0 1 131072 9 6 0.761800 "O" "193" 0 1 131072 10 8 -0.804100 "OXT" "193" 0 1 131072 11 8 -0.804100 !entry.CCYX.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg "N" "7" 0 -1 0.0 "H" "10" 0 -1 0.0 - "CA" "8" 0 -1 0.0 + "CA" "44" 0 -1 0.0 "HA" "12" 0 -1 0.0 - "CB" "" 0 -1 0.0 - "HB2" "" 0 -1 0.0 - "HB3" "" 0 -1 0.0 - "SG" "" 0 -1 0.0 + "CB" "45" 0 -1 0.0 + "HB2" "46" 0 -1 0.0 + "HB3" "46" 0 -1 0.0 + "SG" "49" 0 -1 0.0 "C" "192" 0 -1 0.0 "O" "193" 0 -1 0.0 "OXT" "193" 0 -1 0.0 diff --git a/dat/leap/lib/amoeba_aminont.off b/dat/leap/lib/amoeba_aminont.off index 073970e..0683de7 100644 --- dat/leap/lib/amoeba_aminont.off +++ dat/leap/lib/amoeba_aminont.off @@ -736,12 +736,12 @@ "H1" "191" 0 1 131072 2 1 0.181500 "H2" "191" 0 1 131072 3 1 0.181500 "H3" "191" 0 1 131072 4 1 0.181500 - "CA" "8" 0 1 131072 5 6 0.105500 + "CA" "44" 0 1 131072 5 6 0.105500 "HA" "12" 0 1 131072 6 1 0.092200 - "CB" "" 0 1 131072 7 6 -0.027700 - "HB2" "" 0 1 131072 8 1 0.068000 - "HB3" "" 0 1 131072 9 1 0.068000 - "SG" "" 0 1 131072 10 16 -0.098400 + "CB" "45" 0 1 131072 7 6 -0.027700 + "HB2" "46" 0 1 131072 8 1 0.068000 + "HB3" "46" 0 1 131072 9 1 0.068000 + "SG" "49" 0 1 131072 10 16 -0.098400 "C" "9" 0 1 131072 11 6 0.612300 "O" "11" 0 1 131072 12 8 -0.571300 !entry.NCYX.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg --------------------------------------------------------------------------- Workarounds: none ********> bugfix 14 Author: Andreas W Goetz Date: 2010/10/20 Programs: sqm Description: Fix performance issues of sqm. DIIS related work will now only be done if DIIS is switched on for SCF convergence of difficult cases. Calculations will be approximately 30% faster. To apply the patch: cd $AMBERHOME patch -p0 -N < bugfix.14 ----------------------------------------------------------------------------- diff --git AmberTools/src/sqm/qm2_scf.f AmberTools/src/sqm/qm2_scf.f index 123ff68..801ca23 100644 --- AmberTools/src/sqm/qm2_scf.f +++ AmberTools/src/sqm/qm2_scf.f @@ -33,9 +33,9 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm qm_gb, qmmm_mpi, qmmm_scratch use constants, only : EV_TO_KCAL, zero, two - use qm2_iterator_mod, only : scf_iterator_value - use qm2_iterator_mod, only : diis_iterator_value - use qm2_iterator_mod, only : remaining_diis_tokens + use qm2_iterator_mod, only : scf_iterator_value ! this is an integer function + use qm2_iterator_mod, only : diis_iterator_value ! this is an integer function + use qm2_iterator_mod, only : remaining_diis_tokens ! this is an integer function implicit none @@ -75,21 +75,24 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm !again. This is used to force the last few SCF steps to be full diagonalisations. logical fock_predict_active !Set to true if we are attempting to predict the fock matrix on this QMMM call. - logical diis_is_off, errmat_is_converged character(len=1) :: fock_extrap_flag - logical dont_turn_off_diis + ! DIIS + ! While DIIS will accelerate SCF convergence it will do so at a very high cost + ! since Fock matrix builds and diagonalizations for semiempirical methods are + ! cheaper than the overhead generated by the matrix multiplications required for DIIS + ! Thus switch DIIS only on if we have difficulty in converging the SCF + ! switch DIIS on after SCF step 100 if user turns on DIIS by setting ndiis_attempts > 0 + integer, parameter :: switch_on_diis = 100 ! don't set this to values lower than 3!!! + ! switch DIIS on as a last resort if SCF did not converge until iteration 800 + integer, parameter :: switch_on_diis_last_resort = 800 + logical diis_is_off, errmat_is_converged, errmat_is_on + logical dont_turn_off_diis _REAL_ :: errval -! scf_iterator_value is a function -! integer :: scf_iterator_value - ! current_scf_errval is a function _REAL_ :: current_scf_errval -! remaining_diis_tokens is a function -! integer :: remaining_diis_tokens - !qm2_Helect is a function _REAL_ qm2_HELECT @@ -141,12 +144,13 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm ! i = remaining_diis_tokens( qmmm_nml%ndiis_attempts ) i = remaining_diis_tokens( 0 ) dont_turn_off_diis = .FALSE. + diis_is_off = qmmm_nml%ndiis_attempts < 1 .OR. qmmm_nml%ndiis_matrices < 2 + errmat_is_on = qmmm_nml%errconv < 1.0D-02 + errval = -1.0D0 ! initialize errval to unrealistic value fock_extrap_flag = " " - - if (qmmm_nml%verbosity > 2 .and. qmmm_mpi%commqmmm_master) then write(6,'("QMMM: ")') write(6,'("QMMM: SCF Convergence Information")') @@ -214,8 +218,18 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm energy_diff = scf_energy - eold if (qmmm_mpi%commqmmm_master) then - CALL pack_diis(SIZE(fock_matrix),fock_matrix,den_matrix) - errval = current_scf_errval() + ! do this only if we need it, this seriously affects performance + if ( .not. errmat_is_on ) then + ! check if we shall switch calculation of the error matrix on for diis + if ( ( ( .not. diis_is_off ) .and. (scf_iteration+qmmm_nml%ndiis_matrices >= switch_on_diis) ) & + .or. (scf_iteration+qmmm_nml%ndiis_matrices >= switch_on_diis_last_resort) ) then + errmat_is_on = .true. + end if + end if + if ( errmat_is_on ) then + CALL pack_diis(SIZE(fock_matrix),fock_matrix,den_matrix) + errval = current_scf_errval() + end if end if @@ -290,7 +304,7 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm ! IF THE USER REQUESTED US TO!! The default value of ! qmmm_nml%ndiis_attempts is 0, so this requires a form ! of human intervention - if ( scf_iteration == 100 ) then + if ( scf_iteration == switch_on_diis ) then i = remaining_diis_tokens( qmmm_nml%ndiis_attempts ) dont_turn_off_diis = .TRUE. @@ -306,7 +320,7 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm ! turn the (default OFF) diis parameters on. ! I guess we should turn diis ON for the user. ! I mean, we're at iteration #800. What else can we do? - if ( scf_iteration == 800 ) then + if ( scf_iteration == switch_on_diis_last_resort ) then i = remaining_diis_tokens( 100 ) dont_turn_off_diis = .TRUE. @@ -329,8 +343,8 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm ! end if - diis_is_off = qmmm_nml%ndiis_attempts < 1 .OR. qmmm_nml%ndiis_matrices < 2 - errmat_is_converged = errval < qmmm_nml%errconv !.OR. diis_is_off + ! Is the error matrix converged? Set to true if we don't check for the error matrix + errmat_is_converged = errval < qmmm_nml%errconv .OR. ( .not. errmat_is_on ) if (abs(energy_diff) < qmmm_nml%scfconv .AND. & @@ -379,7 +393,7 @@ subroutine qm2_scf(fock_matrix, hmatrix, W, escf, den_matrix, scf_mchg, num_qmmm ! We have decided that we have not converged ! We must diagonalize a fock matrix so that the next iteration can form a new guess ! density matrix, provided a set of trial orbitals - if (qmmm_mpi%commqmmm_master) then + if (qmmm_mpi%commqmmm_master .and. (.not. diis_is_off) .and. ( scf_iteration >= switch_on_diis ) ) then CALL diis_extrap( qm2_struct%matsize, fock_matrix , fock_extrap_flag ) end if @@ -1941,10 +1955,6 @@ SUBROUTINE diis_extrap(npf,pf,extrap_flag) _REAL_,intent(out) :: pf(npf) ! packed fock matrix character(len=1),intent(out) :: extrap_flag -! integer :: scf_iterator_value -! integer :: diis_iterator_value -! integer :: diis_iterator_prev_value -! integer :: remaining_diis_tokens _REAL_ :: current_scf_errval logical :: HAVE_DIIS_DATA @@ -1975,7 +1985,6 @@ SUBROUTINE diis_extrap(npf,pf,extrap_flag) ERR_IS_SMALL = current_scf_errval() < 0.5d0 HAVE_DIIS_TOKENS = remaining_diis_tokens() > 0 EXTRAPOLATE = HAVE_DIIS_DATA .AND. ERR_IS_SMALL .AND. HAVE_DIIS_TOKENS - IF ( .NOT. EXTRAPOLATE ) THEN pf = qm2_struct%diis_fock( : , diis_idx ) RETURN --------------------------------------------------------------------------- Workarounds: none ********> bugfix.15 cd $AMBERHOME patch -p0 -N < bugfix.15 Author: Daniel R. Roe Date: 2010-10-07 Programs: ptraj Description: Fixes issue where output of cluster trajectory could cause a segfault when trajectory became too large (filestack was not properly cleared). Also fix minor issue in secstruct (DSSP) code where atom indices were not being correctly initialized, leading to minor inconsistencies in turn population calculation with residues without one or more of the following atoms: H, C, N, O. ----------------------------------------------------------------------------- --- AmberTools/src/ptraj/cluster.c 2010-10-07 17:02:51.928036297 -0400 +++ AmberTools/src/ptraj/cluster.c 2010-10-07 17:03:48.046160351 -0400 @@ -4089,7 +4089,7 @@ * to avoid crashing out if we hit the OS-level file-size limit: */ FileNumber[ClusterIndex] = FileNumber[ClusterIndex] + 1; - fclose(OutputFiles[ClusterIndex]); + safe_fclose(OutputFiles[ClusterIndex]); FirstOutputFlag[ClusterIndex] = 1; FirstFlag = 1; } --- AmberTools/src/ptraj/actions.c 2010-09-09 10:29:51.204345479 -0400 +++ AmberTools/src/ptraj/actions.c 2010-10-06 19:00:10.000000000 -0400 @@ -16408,6 +16413,10 @@ residues[i].antiparallelSheetProb = 0; residues[i].turnProb = 0; residues[i].isActive = 0; + residues[i].H=-1; + residues[i].C=-1; + residues[i].N=-1; + residues[i].O=-1; } actRes = 0; for (i = 0; i < action->state->atoms; i++) { --------------------------------------------------------------------------- Workarounds: none ********> bugfix.16 cd $AMBERHOME patch -p0 -N < bugfix.16 Author: Daniel R. Roe Date: 2010-08-11 Description: Fix file seeking in ptraj for large (>2GB) files. ----------------------------------------------------------------------------- --- AmberTools/src/ptraj/trajectory.c 2010-11-05 16:11:44.497971494 -0400 +++ AmberTools/src/ptraj/trajectory.c 2010-11-05 16:14:39.102729060 -0400 @@ -2341,15 +2341,22 @@ /* trajFile_fseek() * Wrapper for fseek. Seek to a given frame. + * fseeko is used for better compatibility with large files. To avoid + * losing bits each variable is explicitly converted to off_t in offset + * calculation. */ int trajFile_fseek(coordinateInfo *C, int frame) { int err; + off_t offset; if (C==NULL) return -1; - if (C->isMPI==0) - err=fseek(C->file, C->titleSize+(frame*C->frameSize), SEEK_SET); - else + if (C->isMPI==0) { + offset = (off_t) frame; + offset *= (off_t) C->frameSize; + offset += (off_t) C->titleSize; + err=fseeko(C->file, offset, SEEK_SET); + } else err=parallel_fseek(C,frame); return err; ----------------------------------------------------------------------------- Workarounds: none