diff --git a/regtest/basic/rt77/DERIV_A.reference b/regtest/basic/rt77/DERIV_A.reference index 3d59243a02c930fa6172557c299c4eb44f122058..7b65dabad368787e6fdc66ebe2bcad8ffce3b9df 100644 --- a/regtest/basic/rt77/DERIV_A.reference +++ b/regtest/basic/rt77/DERIV_A.reference @@ -2,7 +2,7 @@ 0.000000 0 37.9 0.000000 1 23.2 0.000000 2 7.0 - 0.000000 3 6.7 + 0.000000 3 6.6 0.000000 4 9.9 0.000000 5 0.8 0.000000 6 0.6 @@ -11,7 +11,7 @@ 0.000000 9 -1.5 0.000000 10 1.2 0.000000 11 1.5 - 0.000000 12 -1.9 + 0.000000 12 -2.0 0.000000 13 3.7 0.000000 14 -2.8 0.000000 15 -12.3 @@ -20,7 +20,7 @@ 0.000000 18 -13.7 0.000000 19 16.2 0.000000 20 -5.1 - 0.000000 21 -9.9 + 0.000000 21 -10.0 0.000000 22 -4.4 0.000000 23 -1.1 0.000000 24 -13.3 @@ -110,7 +110,7 @@ 0.000000 108 23.3 0.000000 109 -27.9 0.000000 110 5.4 - 0.000000 111 22.3 + 0.000000 111 22.4 0.000000 112 -33.6 0.000000 113 13.8 0.000000 114 3.5 @@ -170,7 +170,7 @@ 0.000000 168 9.8 0.000000 169 40.4 0.000000 170 -3.2 - 0.000000 171 -15.2 + 0.000000 171 -15.1 0.000000 172 1.2 0.000000 173 17.8 0.000000 174 -25.1 @@ -183,7 +183,7 @@ 0.000000 181 -4.2 0.000000 182 22.3 0.000000 183 -4.2 - 0.000000 184 212.6 + 0.000000 184 212.7 0.000000 185 17.6 0.000000 186 22.3 0.000000 187 17.6 @@ -285,7 +285,7 @@ 0.004000 94 -1.7 0.004000 95 -3.6 0.004000 96 -7.7 - 0.004000 97 -2.9 + 0.004000 97 -3.0 0.004000 98 -5.6 0.004000 99 -7.3 0.004000 100 -5.4 @@ -376,10 +376,10 @@ 0.004000 185 19.0 0.004000 186 9.6 0.004000 187 19.0 - 0.004000 188 169.9 + 0.004000 188 170.0 0.008000 0 37.5 0.008000 1 26.8 - 0.008000 2 19.5 + 0.008000 2 19.6 0.008000 3 11.6 0.008000 4 15.9 0.008000 5 -4.5 @@ -402,7 +402,7 @@ 0.008000 22 -7.6 0.008000 23 -0.9 0.008000 24 -20.0 - 0.008000 25 -7.8 + 0.008000 25 -7.7 0.008000 26 28.8 0.008000 27 2.2 0.008000 28 5.5 @@ -520,7 +520,7 @@ 0.008000 140 -16.2 0.008000 141 30.2 0.008000 142 8.3 - 0.008000 143 -2.3 + 0.008000 143 -2.2 0.008000 144 -3.9 0.008000 145 2.7 0.008000 146 3.0 @@ -557,15 +557,15 @@ 0.008000 177 -11.2 0.008000 178 -0.1 0.008000 179 32.7 - 0.008000 180 164.5 + 0.008000 180 164.6 0.008000 181 -6.2 0.008000 182 15.3 0.008000 183 -6.2 - 0.008000 184 206.4 - 0.008000 185 13.8 + 0.008000 184 206.5 + 0.008000 185 13.9 0.008000 186 15.3 - 0.008000 187 13.8 - 0.008000 188 172.8 + 0.008000 187 13.9 + 0.008000 188 172.9 0.012000 0 33.2 0.012000 1 31.0 0.012000 2 27.8 @@ -604,7 +604,7 @@ 0.012000 35 -3.0 0.012000 36 -11.2 0.012000 37 15.7 - 0.012000 38 -25.5 + 0.012000 38 -25.6 0.012000 39 -23.1 0.012000 40 36.9 0.012000 41 23.3 @@ -636,8 +636,8 @@ 0.012000 67 -6.3 0.012000 68 -35.1 0.012000 69 6.0 - 0.012000 70 -26.7 - 0.012000 71 -45.5 + 0.012000 70 -26.8 + 0.012000 71 -45.6 0.012000 72 -7.5 0.012000 73 -11.3 0.012000 74 -13.9 @@ -714,7 +714,7 @@ 0.012000 145 -10.2 0.012000 146 3.5 0.012000 147 12.2 - 0.012000 148 -11.5 + 0.012000 148 -11.4 0.012000 149 5.9 0.012000 150 26.4 0.012000 151 -12.7 @@ -745,16 +745,16 @@ 0.012000 176 20.9 0.012000 177 -8.7 0.012000 178 -4.1 - 0.012000 179 39.2 + 0.012000 179 39.3 0.012000 180 155.5 0.012000 181 -15.7 0.012000 182 16.4 0.012000 183 -15.7 - 0.012000 184 185.0 + 0.012000 184 185.1 0.012000 185 26.7 0.012000 186 16.4 0.012000 187 26.7 - 0.012000 188 178.3 + 0.012000 188 178.4 0.016000 0 26.5 0.016000 1 28.9 0.016000 2 5.9 @@ -779,7 +779,7 @@ 0.016000 21 -7.4 0.016000 22 -6.1 0.016000 23 1.1 - 0.016000 24 -11.4 + 0.016000 24 -11.5 0.016000 25 -1.8 0.016000 26 24.8 0.016000 27 3.3 @@ -881,7 +881,7 @@ 0.016000 123 10.5 0.016000 124 32.0 0.016000 125 -21.1 - 0.016000 126 -3.4 + 0.016000 126 -3.3 0.016000 127 -17.6 0.016000 128 -20.4 0.016000 129 10.6 @@ -905,9 +905,9 @@ 0.016000 147 16.8 0.016000 148 -12.5 0.016000 149 21.6 - 0.016000 150 28.1 + 0.016000 150 28.2 0.016000 151 -11.0 - 0.016000 152 23.2 + 0.016000 152 23.3 0.016000 153 -8.7 0.016000 154 3.1 0.016000 155 11.5 @@ -924,7 +924,7 @@ 0.016000 166 27.5 0.016000 167 -1.2 0.016000 168 5.5 - 0.016000 169 45.8 + 0.016000 169 45.9 0.016000 170 -7.0 0.016000 171 -13.3 0.016000 172 -0.1 @@ -939,11 +939,11 @@ 0.016000 181 -6.6 0.016000 182 10.3 0.016000 183 -6.6 - 0.016000 184 183.4 + 0.016000 184 183.5 0.016000 185 23.4 0.016000 186 10.3 0.016000 187 23.4 - 0.016000 188 175.1 + 0.016000 188 175.2 0.020000 0 28.6 0.020000 1 31.2 0.020000 2 33.5 @@ -998,8 +998,8 @@ 0.020000 51 10.7 0.020000 52 16.1 0.020000 53 -16.9 - 0.020000 54 -15.8 - 0.020000 55 25.1 + 0.020000 54 -15.9 + 0.020000 55 25.0 0.020000 56 -2.6 0.020000 57 -9.4 0.020000 58 5.6 @@ -1024,7 +1024,7 @@ 0.020000 77 -8.1 0.020000 78 -8.0 0.020000 79 -12.1 - 0.020000 80 5.6 + 0.020000 80 5.5 0.020000 81 -11.2 0.020000 82 -9.6 0.020000 83 7.9 @@ -1070,7 +1070,7 @@ 0.020000 123 19.0 0.020000 124 22.2 0.020000 125 -12.6 - 0.020000 126 13.6 + 0.020000 126 13.7 0.020000 127 -15.7 0.020000 128 -38.0 0.020000 129 11.2 @@ -1116,7 +1116,7 @@ 0.020000 169 43.0 0.020000 170 -6.6 0.020000 171 -11.7 - 0.020000 172 4.2 + 0.020000 172 4.3 0.020000 173 15.0 0.020000 174 -19.3 0.020000 175 -3.1 diff --git a/regtest/basic/rt77/DERIV_N.reference b/regtest/basic/rt77/DERIV_N.reference index e0ed91e9a506b576bb2f85bc3b8449bffcb101f4..a2fcda2760e70ed36304e644e86223de7310df89 100644 --- a/regtest/basic/rt77/DERIV_N.reference +++ b/regtest/basic/rt77/DERIV_N.reference @@ -2,7 +2,7 @@ 0.000000 0 37.9 0.000000 1 23.2 0.000000 2 7.0 - 0.000000 3 6.7 + 0.000000 3 6.6 0.000000 4 9.9 0.000000 5 0.8 0.000000 6 0.6 @@ -11,7 +11,7 @@ 0.000000 9 -1.5 0.000000 10 1.2 0.000000 11 1.5 - 0.000000 12 -1.9 + 0.000000 12 -2.0 0.000000 13 3.7 0.000000 14 -2.8 0.000000 15 -12.3 @@ -20,7 +20,7 @@ 0.000000 18 -13.7 0.000000 19 16.2 0.000000 20 -5.1 - 0.000000 21 -9.9 + 0.000000 21 -10.0 0.000000 22 -4.4 0.000000 23 -1.1 0.000000 24 -13.3 @@ -110,7 +110,7 @@ 0.000000 108 23.3 0.000000 109 -27.9 0.000000 110 5.4 - 0.000000 111 22.3 + 0.000000 111 22.4 0.000000 112 -33.6 0.000000 113 13.8 0.000000 114 3.5 @@ -170,7 +170,7 @@ 0.000000 168 9.8 0.000000 169 40.4 0.000000 170 -3.2 - 0.000000 171 -15.2 + 0.000000 171 -15.1 0.000000 172 1.2 0.000000 173 17.8 0.000000 174 -25.1 @@ -183,7 +183,7 @@ 0.000000 181 -4.2 0.000000 182 22.3 0.000000 183 -4.2 - 0.000000 184 212.6 + 0.000000 184 212.7 0.000000 185 17.6 0.000000 186 22.3 0.000000 187 17.6 @@ -285,7 +285,7 @@ 0.004000 94 -1.7 0.004000 95 -3.6 0.004000 96 -7.7 - 0.004000 97 -2.9 + 0.004000 97 -3.0 0.004000 98 -5.6 0.004000 99 -7.3 0.004000 100 -5.4 @@ -376,10 +376,10 @@ 0.004000 185 19.0 0.004000 186 9.6 0.004000 187 19.0 - 0.004000 188 169.9 + 0.004000 188 170.0 0.008000 0 37.5 0.008000 1 26.8 - 0.008000 2 19.5 + 0.008000 2 19.6 0.008000 3 11.6 0.008000 4 15.9 0.008000 5 -4.5 @@ -402,7 +402,7 @@ 0.008000 22 -7.6 0.008000 23 -0.9 0.008000 24 -20.0 - 0.008000 25 -7.8 + 0.008000 25 -7.7 0.008000 26 28.8 0.008000 27 2.2 0.008000 28 5.5 @@ -520,7 +520,7 @@ 0.008000 140 -16.2 0.008000 141 30.2 0.008000 142 8.3 - 0.008000 143 -2.3 + 0.008000 143 -2.2 0.008000 144 -3.9 0.008000 145 2.7 0.008000 146 3.0 @@ -557,15 +557,15 @@ 0.008000 177 -11.2 0.008000 178 -0.1 0.008000 179 32.7 - 0.008000 180 164.5 + 0.008000 180 164.6 0.008000 181 -6.2 0.008000 182 15.3 0.008000 183 -6.2 - 0.008000 184 206.4 - 0.008000 185 13.8 + 0.008000 184 206.5 + 0.008000 185 13.9 0.008000 186 15.3 - 0.008000 187 13.8 - 0.008000 188 172.8 + 0.008000 187 13.9 + 0.008000 188 172.9 0.012000 0 33.2 0.012000 1 31.0 0.012000 2 27.8 @@ -604,7 +604,7 @@ 0.012000 35 -3.0 0.012000 36 -11.2 0.012000 37 15.7 - 0.012000 38 -25.5 + 0.012000 38 -25.6 0.012000 39 -23.1 0.012000 40 36.9 0.012000 41 23.3 @@ -636,8 +636,8 @@ 0.012000 67 -6.3 0.012000 68 -35.1 0.012000 69 6.0 - 0.012000 70 -26.7 - 0.012000 71 -45.5 + 0.012000 70 -26.8 + 0.012000 71 -45.6 0.012000 72 -7.5 0.012000 73 -11.3 0.012000 74 -13.9 @@ -714,7 +714,7 @@ 0.012000 145 -10.2 0.012000 146 3.5 0.012000 147 12.2 - 0.012000 148 -11.5 + 0.012000 148 -11.4 0.012000 149 5.9 0.012000 150 26.4 0.012000 151 -12.7 @@ -745,16 +745,16 @@ 0.012000 176 20.9 0.012000 177 -8.7 0.012000 178 -4.1 - 0.012000 179 39.2 + 0.012000 179 39.3 0.012000 180 155.5 0.012000 181 -15.7 0.012000 182 16.4 0.012000 183 -15.7 - 0.012000 184 185.0 + 0.012000 184 185.1 0.012000 185 26.7 0.012000 186 16.4 0.012000 187 26.7 - 0.012000 188 178.3 + 0.012000 188 178.4 0.016000 0 26.5 0.016000 1 28.9 0.016000 2 5.9 @@ -779,7 +779,7 @@ 0.016000 21 -7.4 0.016000 22 -6.1 0.016000 23 1.1 - 0.016000 24 -11.4 + 0.016000 24 -11.5 0.016000 25 -1.8 0.016000 26 24.8 0.016000 27 3.3 @@ -881,7 +881,7 @@ 0.016000 123 10.5 0.016000 124 32.0 0.016000 125 -21.1 - 0.016000 126 -3.4 + 0.016000 126 -3.3 0.016000 127 -17.6 0.016000 128 -20.4 0.016000 129 10.6 @@ -905,9 +905,9 @@ 0.016000 147 16.8 0.016000 148 -12.5 0.016000 149 21.6 - 0.016000 150 28.1 + 0.016000 150 28.2 0.016000 151 -11.0 - 0.016000 152 23.2 + 0.016000 152 23.3 0.016000 153 -8.7 0.016000 154 3.1 0.016000 155 11.5 @@ -924,7 +924,7 @@ 0.016000 166 27.5 0.016000 167 -1.2 0.016000 168 5.5 - 0.016000 169 45.8 + 0.016000 169 45.9 0.016000 170 -7.0 0.016000 171 -13.3 0.016000 172 -0.1 @@ -939,11 +939,11 @@ 0.016000 181 -6.6 0.016000 182 10.3 0.016000 183 -6.6 - 0.016000 184 183.4 + 0.016000 184 183.5 0.016000 185 23.4 0.016000 186 10.3 0.016000 187 23.4 - 0.016000 188 175.1 + 0.016000 188 175.2 0.020000 0 28.6 0.020000 1 31.2 0.020000 2 33.5 @@ -998,8 +998,8 @@ 0.020000 51 10.7 0.020000 52 16.1 0.020000 53 -16.9 - 0.020000 54 -15.8 - 0.020000 55 25.1 + 0.020000 54 -15.9 + 0.020000 55 25.0 0.020000 56 -2.6 0.020000 57 -9.4 0.020000 58 5.6 @@ -1024,7 +1024,7 @@ 0.020000 77 -8.1 0.020000 78 -8.0 0.020000 79 -12.1 - 0.020000 80 5.6 + 0.020000 80 5.5 0.020000 81 -11.2 0.020000 82 -9.6 0.020000 83 7.9 @@ -1070,7 +1070,7 @@ 0.020000 123 19.0 0.020000 124 22.2 0.020000 125 -12.6 - 0.020000 126 13.6 + 0.020000 126 13.7 0.020000 127 -15.7 0.020000 128 -38.0 0.020000 129 11.2 @@ -1116,7 +1116,7 @@ 0.020000 169 43.0 0.020000 170 -6.6 0.020000 171 -11.7 - 0.020000 172 4.2 + 0.020000 172 4.3 0.020000 173 15.0 0.020000 174 -19.3 0.020000 175 -3.1 diff --git a/regtest/basic/rt77/SOLV.reference b/regtest/basic/rt77/SOLV.reference index f8772b2946d801db128e520319bf35004ccd24a0..42b52eaf1bd84371f33154c997908055be8bb1ff 100644 --- a/regtest/basic/rt77/SOLV.reference +++ b/regtest/basic/rt77/SOLV.reference @@ -1,7 +1,7 @@ #! FIELDS time solva - 0.000000 -412.031669 - 0.004000 -423.996579 - 0.008000 -423.242726 - 0.012000 -432.084461 - 0.016000 -430.550584 - 0.020000 -437.886350 + 0.000000 -412.021877 + 0.004000 -423.988445 + 0.008000 -423.233137 + 0.012000 -432.075767 + 0.016000 -430.542565 + 0.020000 -437.877927 diff --git a/regtest/basic/rt77/config b/regtest/basic/rt77/config index 76cf7ed9d58777fdb5a8d45bd109acbea4503cea..3585e26de657882fd32e1b48a22c7200c9dcce94 100644 --- a/regtest/basic/rt77/config +++ b/regtest/basic/rt77/config @@ -1,3 +1,3 @@ -#type=driver +type=driver # this is to test a different name -#arg="--plumed plumed.dat --trajectory-stride 2 --timestep 0.002 --mf_xtc trajectory.xtc --dump-forces forces" +arg="--plumed plumed.dat --trajectory-stride 2 --timestep 0.002 --mf_xtc trajectory.xtc --dump-forces forces --dump-forces-fmt=%.3f" diff --git a/regtest/basic/rt77/forces.reference b/regtest/basic/rt77/forces.reference index 7dbee3875eeba6710e62503ad9573c700f7cd6c6..e5ea174992f3727d678115482fcf571f6fe06eed 100644 --- a/regtest/basic/rt77/forces.reference +++ b/regtest/basic/rt77/forces.reference @@ -1,678 +1,678 @@ 111 --182.979226 -212.606423 -181.170831 -X -37.892009 -23.177254 -6.996948 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -6.650461 -9.945286 -0.819789 -X 0.000000 0.000000 0.000000 -X -0.636235 -10.259742 13.619073 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.547005 -1.204864 -1.535179 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.948448 -3.697189 2.770607 -X 12.290244 -18.992972 21.512340 -X 13.665089 -16.190172 5.074262 -X 9.949816 4.375184 1.113593 -X 13.335985 -0.416637 -23.443941 -X -0.579049 -8.639075 -13.117741 -X 0.000000 0.000000 0.000000 -X 1.820158 -7.616860 0.438561 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 12.430808 6.488505 1.554943 -X 9.309149 -18.362037 17.187453 -X 25.582918 -25.622991 -18.279500 -X 0.000000 0.000000 0.000000 -X 13.186976 0.053054 -9.076590 -X 0.000000 0.000000 0.000000 -X 33.041211 19.813826 -6.392141 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.654622 9.090229 8.333290 -X 9.694142 -10.648414 -5.362670 -X 26.719785 -19.304220 14.333294 -X 0.000000 0.000000 0.000000 -X 12.910710 -9.348740 21.341827 -X 0.000000 0.000000 0.000000 -X 2.279608 1.170995 42.552796 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -10.151578 8.341853 20.596796 -X -34.944806 -1.833520 36.714011 -X -17.353785 12.435082 38.573857 -X 0.000000 0.000000 0.000000 -X -0.492193 17.962447 5.346810 -X 0.000000 0.000000 0.000000 -X 4.670480 29.904026 -0.232269 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 8.044709 13.862774 -6.393420 -X 8.899042 9.810270 -5.657980 -X 0.000000 0.000000 0.000000 -X 3.704132 14.085377 -34.580899 -X 0.000000 0.000000 0.000000 -X 2.689505 2.187736 -6.681770 -X 15.946266 3.210268 10.442403 -X 0.000000 0.000000 0.000000 -X 7.964838 2.468905 7.811632 -X 0.000000 0.000000 0.000000 -X 4.084378 3.607401 6.771029 -X 0.000000 0.000000 0.000000 -X 4.685712 8.454928 11.726839 -X 0.000000 0.000000 0.000000 -X 1.873605 5.348489 -0.121260 -X -11.976337 14.676762 -13.912967 -X -23.284662 27.936892 -5.403337 -X -22.348757 33.595763 -13.765528 -X 0.000000 0.000000 0.000000 -X -3.478827 7.649790 -9.896120 -X 0.000000 0.000000 0.000000 -X 13.226171 11.731799 -41.058646 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -9.792697 -8.810320 -2.936201 -X -8.001756 -34.514106 12.519234 -X 11.481752 21.713570 17.434118 -X 0.000000 0.000000 0.000000 -X -5.374567 6.717420 18.982298 -X 0.000000 0.000000 0.000000 -X -31.441878 0.411368 28.470570 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -18.025861 -8.785660 2.764609 -X -30.101396 -28.813547 5.643501 -X -30.820121 -4.490271 -1.432521 -X 0.000000 0.000000 0.000000 -X -11.300966 4.764869 -2.216309 -X 0.000000 0.000000 0.000000 -X -12.654778 10.974953 -24.862634 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -30.825044 18.905850 -33.972537 -X 0.000000 0.000000 0.000000 -X -0.864465 2.037114 -1.968492 -X 29.126008 0.672375 -7.921787 -X -15.075149 -2.968676 3.794054 -X 0.000000 0.000000 0.000000 -X 4.013739 0.465042 -2.496473 -X 0.000000 0.000000 0.000000 -X 3.978272 -26.482495 0.147463 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -9.798652 -40.365188 3.249235 -X 0.000000 0.000000 0.000000 -X 15.150432 -1.225288 -17.769998 -X 25.072212 4.486690 -22.355959 -X 12.888104 2.303918 -40.158893 +-183.029 -212.689 -181.218 +X -37.893 -23.185 -7.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -6.650 -9.947 -0.819 +X 0.000 0.000 0.000 +X -0.635 -10.265 13.619 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.549 -1.209 -1.535 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.953 -3.702 2.775 +X 12.292 -18.995 21.514 +X 13.668 -16.195 5.076 +X 9.951 4.370 1.114 +X 13.338 -0.425 -23.444 +X -0.578 -8.647 -13.118 +X 0.000 0.000 0.000 +X 1.822 -7.618 0.440 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 12.432 6.488 1.556 +X 9.310 -18.362 17.188 +X 25.585 -25.623 -18.279 +X 0.000 0.000 0.000 +X 13.187 0.053 -9.076 +X 0.000 0.000 0.000 +X 33.044 19.815 -6.390 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.656 9.091 8.336 +X 9.694 -10.648 -5.363 +X 26.725 -19.297 14.342 +X 0.000 0.000 0.000 +X 12.911 -9.347 21.343 +X 0.000 0.000 0.000 +X 2.283 1.175 42.558 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -10.150 8.344 20.600 +X -34.945 -1.831 36.717 +X -17.351 12.446 38.582 +X 0.000 0.000 0.000 +X -0.492 17.964 5.348 +X 0.000 0.000 0.000 +X 4.671 29.907 -0.230 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 8.046 13.867 -6.391 +X 8.902 9.815 -5.656 +X 0.000 0.000 0.000 +X 3.717 14.100 -34.576 +X 0.000 0.000 0.000 +X 2.691 2.189 -6.681 +X 15.949 3.212 10.444 +X 0.000 0.000 0.000 +X 7.967 2.471 7.813 +X 0.000 0.000 0.000 +X 4.087 3.610 6.773 +X 0.000 0.000 0.000 +X 4.687 8.458 11.728 +X 0.000 0.000 0.000 +X 1.875 5.350 -0.120 +X -11.976 14.681 -13.911 +X -23.286 27.944 -5.401 +X -22.351 33.602 -13.766 +X 0.000 0.000 0.000 +X -3.479 7.650 -9.896 +X 0.000 0.000 0.000 +X 13.227 11.731 -41.058 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -9.793 -8.810 -2.936 +X -8.003 -34.512 12.519 +X 11.476 21.711 17.432 +X 0.000 0.000 0.000 +X -5.375 6.717 18.982 +X 0.000 0.000 0.000 +X -31.445 0.409 28.471 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -18.027 -8.787 2.764 +X -30.108 -28.817 5.640 +X -30.825 -4.492 -1.435 +X 0.000 0.000 0.000 +X -11.302 4.764 -2.217 +X 0.000 0.000 0.000 +X -12.655 10.975 -24.863 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -30.844 18.909 -33.987 +X 0.000 0.000 0.000 +X -0.866 2.035 -1.969 +X 29.124 0.673 -7.924 +X -15.081 -2.971 3.788 +X 0.000 0.000 0.000 +X 4.013 0.464 -2.497 +X 0.000 0.000 0.000 +X 3.977 -26.486 0.144 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -9.803 -40.377 3.241 +X 0.000 0.000 0.000 +X 15.149 -1.229 -17.776 +X 25.070 4.486 -22.362 +X 12.885 2.299 -40.168 111 --174.256062 -195.563813 -169.940918 -X -33.504346 -26.233800 -27.227489 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -4.314534 -12.076230 -2.274340 -X 0.000000 0.000000 0.000000 -X -2.727529 -7.983268 15.249016 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -1.117747 6.330929 8.583964 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.365582 -2.796798 3.357541 -X 6.120685 -6.641892 11.382234 -X 15.654054 -26.340828 11.306222 -X 8.545879 6.533114 0.997753 -X 17.574233 3.647650 -21.841270 -X 5.202009 -4.291813 -16.921654 -X 0.000000 0.000000 0.000000 -X 10.156041 -14.655119 -15.497448 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.561069 10.417970 1.631879 -X 8.561524 -12.226748 26.757840 -X 20.629329 7.135733 -19.453332 -X 0.000000 0.000000 0.000000 -X 14.097752 6.145450 -4.997924 -X 0.000000 0.000000 0.000000 -X 19.609784 2.079830 -17.011506 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.770734 5.625515 6.817856 -X -11.566663 -26.552770 -1.522341 -X 27.461957 -26.801754 -0.463889 -X 0.000000 0.000000 0.000000 -X 13.577953 -12.272856 18.032644 -X 0.000000 0.000000 0.000000 -X 7.864679 -2.066881 42.102580 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -6.270680 8.472488 20.982345 -X -29.793745 -3.368488 40.383954 -X -2.588743 8.013577 39.692087 -X 0.000000 0.000000 0.000000 -X 3.317423 16.109281 8.528994 -X 0.000000 0.000000 0.000000 -X 8.724985 27.160699 8.763503 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 7.262980 12.288725 -3.964714 -X 11.106178 9.907501 -6.628001 -X 0.000000 0.000000 0.000000 -X -6.877203 13.603962 -29.880109 -X 0.000000 0.000000 0.000000 -X -0.633870 1.339468 -6.317343 -X 18.847103 1.770807 3.196040 -X 0.000000 0.000000 0.000000 -X 9.441636 1.745876 3.566231 -X 0.000000 0.000000 0.000000 -X 7.659355 2.948511 5.633266 -X 0.000000 0.000000 0.000000 -X 7.315555 5.429270 8.920824 -X 0.000000 0.000000 0.000000 -X -0.930850 3.715067 -0.598850 -X -10.558920 16.800048 -9.434578 -X -24.826667 29.689266 0.312091 -X -15.883566 30.279351 -29.306943 -X 0.000000 0.000000 0.000000 -X 5.981868 4.647672 -6.983190 -X 0.000000 0.000000 0.000000 -X 11.393275 17.535489 -16.079123 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -11.151856 -2.635464 0.105159 -X -7.869187 -20.776997 15.303469 -X -0.339845 22.195714 24.919057 -X 0.000000 0.000000 0.000000 -X -13.028278 0.737222 13.273708 -X 0.000000 0.000000 0.000000 -X -36.576726 4.881029 22.243066 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -18.295063 -9.850668 0.716730 -X -23.677700 -24.247430 10.114527 -X -37.870436 -5.745949 2.346552 -X 0.000000 0.000000 0.000000 -X -0.856220 3.902109 -0.552110 -X 0.000000 0.000000 0.000000 -X -9.655214 13.799722 -26.750404 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -27.075109 23.719230 -35.972690 -X 0.000000 0.000000 0.000000 -X 8.702826 -5.754756 -10.299929 -X 21.673205 -4.212133 -14.189610 -X -15.752409 1.891349 -0.169177 -X 0.000000 0.000000 0.000000 -X 1.018474 -7.449247 4.691944 -X 0.000000 0.000000 0.000000 -X 1.377341 -27.712043 7.199104 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -1.326184 -32.025603 13.305915 -X 0.000000 0.000000 0.000000 -X 12.983084 -3.903718 -16.308295 -X 22.112924 1.417079 -21.150340 -X 11.397814 -3.293454 -38.621497 +-174.301 -195.642 -169.970 +X -33.499 -26.248 -27.231 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -4.312 -12.082 -2.275 +X 0.000 0.000 0.000 +X -2.725 -7.987 15.249 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -1.112 6.325 8.587 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.366 -2.797 3.359 +X 6.121 -6.642 11.382 +X 15.655 -26.343 11.306 +X 8.548 6.530 0.997 +X 17.583 3.636 -21.844 +X 5.205 -4.303 -16.924 +X 0.000 0.000 0.000 +X 10.156 -14.655 -15.497 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.562 10.418 1.632 +X 8.562 -12.227 26.758 +X 20.629 7.136 -19.453 +X 0.000 0.000 0.000 +X 14.099 6.145 -4.997 +X 0.000 0.000 0.000 +X 19.613 2.079 -17.010 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.771 5.626 6.818 +X -11.567 -26.552 -1.522 +X 27.463 -26.800 -0.461 +X 0.000 0.000 0.000 +X 13.579 -12.273 18.033 +X 0.000 0.000 0.000 +X 7.867 -2.063 42.109 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -6.271 8.474 20.983 +X -29.796 -3.364 40.386 +X -2.590 8.023 39.697 +X 0.000 0.000 0.000 +X 3.318 16.111 8.530 +X 0.000 0.000 0.000 +X 8.726 27.166 8.768 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 7.266 12.293 -3.961 +X 11.107 9.909 -6.627 +X 0.000 0.000 0.000 +X -6.872 13.610 -29.878 +X 0.000 0.000 0.000 +X -0.631 1.342 -6.316 +X 18.848 1.772 3.197 +X 0.000 0.000 0.000 +X 9.444 1.748 3.567 +X 0.000 0.000 0.000 +X 7.661 2.950 5.634 +X 0.000 0.000 0.000 +X 7.317 5.432 8.922 +X 0.000 0.000 0.000 +X -0.929 3.718 -0.597 +X -10.559 16.801 -9.434 +X -24.827 29.696 0.315 +X -15.886 30.286 -29.306 +X 0.000 0.000 0.000 +X 5.981 4.649 -6.983 +X 0.000 0.000 0.000 +X 11.392 17.539 -16.079 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -11.153 -2.634 0.105 +X -7.870 -20.777 15.303 +X -0.346 22.199 24.919 +X 0.000 0.000 0.000 +X -13.030 0.738 13.274 +X 0.000 0.000 0.000 +X -36.578 4.882 22.243 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -18.296 -9.851 0.717 +X -23.682 -24.248 10.114 +X -37.874 -5.746 2.345 +X 0.000 0.000 0.000 +X -0.857 3.903 -0.552 +X 0.000 0.000 0.000 +X -9.657 13.801 -26.751 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -27.089 23.718 -35.982 +X 0.000 0.000 0.000 +X 8.702 -5.755 -10.300 +X 21.670 -4.212 -14.192 +X -15.758 1.890 -0.175 +X 0.000 0.000 0.000 +X 1.018 -7.449 4.692 +X 0.000 0.000 0.000 +X 1.376 -27.715 7.197 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -1.329 -32.034 13.301 +X 0.000 0.000 0.000 +X 12.983 -3.904 -16.308 +X 22.111 1.413 -21.155 +X 11.395 -3.297 -38.628 111 --164.527952 -206.434842 -172.833505 -X -37.534154 -26.785619 -19.547008 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -11.611986 -15.875575 4.491049 -X 0.000000 0.000000 0.000000 -X -0.521388 -8.320521 12.708227 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 8.283429 -9.989709 8.945569 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 2.085727 -3.110769 2.556615 -X 9.162966 -8.820691 11.279380 -X 11.241194 -12.212646 4.090138 -X 8.750186 7.592764 0.910127 -X 20.011387 7.753323 -28.757436 -X -2.201210 -5.519824 -14.516602 -X 0.000000 0.000000 0.000000 -X -2.271415 -13.007333 -17.523745 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 9.218407 9.147281 2.623133 -X 15.195341 -10.804514 29.532142 -X 28.201616 -23.158584 -18.384165 -X 0.000000 0.000000 0.000000 -X 15.557386 4.635436 -1.039121 -X 0.000000 0.000000 0.000000 -X 30.375622 22.638552 -7.966115 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.574487 6.689598 11.046222 -X -6.462903 -20.389040 4.230769 -X 17.841447 -24.026569 30.612153 -X 0.000000 0.000000 0.000000 -X 1.658728 -7.156685 18.336271 -X 0.000000 0.000000 0.000000 -X 10.413165 -7.101434 17.446510 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -7.391865 9.371711 19.029627 -X -23.721194 0.565392 34.785842 -X -8.504187 14.858985 44.503508 -X 0.000000 0.000000 0.000000 -X 10.061955 13.611728 13.935863 -X 0.000000 0.000000 0.000000 -X 9.994206 27.939901 1.995467 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 8.530923 11.176129 -6.349697 -X 12.094517 8.870964 -8.043372 -X 0.000000 0.000000 0.000000 -X -1.982289 11.082629 -34.057237 -X 0.000000 0.000000 0.000000 -X 0.619661 0.601925 -6.477627 -X 17.495725 2.970150 4.966100 -X 0.000000 0.000000 0.000000 -X 8.606214 2.468262 4.232981 -X 0.000000 0.000000 0.000000 -X 6.785422 3.603972 5.421210 -X 0.000000 0.000000 0.000000 -X 6.986252 7.201491 8.643865 -X 0.000000 0.000000 0.000000 -X -0.405328 3.603040 -1.511838 -X -10.478136 14.751197 -11.228231 -X -30.959634 32.653394 -9.157682 -X -23.928184 33.627767 -2.067480 -X 0.000000 0.000000 0.000000 -X 2.915464 6.473733 -5.602269 -X 0.000000 0.000000 0.000000 -X 3.081722 15.404371 -41.946503 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -10.149331 -6.816143 -4.475689 -X -13.211928 -22.398149 -3.804120 -X -1.240842 15.558496 20.069654 -X 0.000000 0.000000 0.000000 -X -8.848812 -3.139093 13.338599 -X 0.000000 0.000000 0.000000 -X -28.737894 -7.259964 27.855809 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -15.936469 -10.524873 3.336133 -X -22.008511 -24.274327 16.229775 -X -30.203681 -8.317821 2.251530 -X 0.000000 0.000000 0.000000 -X 3.889472 -2.726224 -2.963217 -X 0.000000 0.000000 0.000000 -X -13.598857 15.361075 -25.678823 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -29.108428 22.784196 -30.158485 -X 0.000000 0.000000 0.000000 -X 0.254995 3.787006 -2.895697 -X 26.522855 6.526610 -12.429941 -X -19.327772 11.009931 4.217602 -X 0.000000 0.000000 0.000000 -X 6.134851 1.952852 -11.630927 -X 0.000000 0.000000 0.000000 -X 3.695987 -28.928636 2.620441 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -5.682896 -46.122235 11.557807 -X 0.000000 0.000000 0.000000 -X 14.196900 -2.595167 -16.924644 -X 23.363245 3.018741 -19.952255 -X 11.227843 0.089542 -32.710193 +-164.572 -206.513 -172.888 +X -37.531 -26.802 -19.550 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -11.612 -15.878 4.491 +X 0.000 0.000 0.000 +X -0.518 -8.326 12.709 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 8.287 -9.993 8.947 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 2.088 -3.113 2.558 +X 9.163 -8.821 11.280 +X 11.242 -12.215 4.090 +X 8.751 7.592 0.910 +X 20.013 7.745 -28.760 +X -2.199 -5.529 -14.517 +X 0.000 0.000 0.000 +X -2.269 -13.008 -17.522 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 9.219 9.147 2.624 +X 15.197 -10.805 29.534 +X 28.205 -23.159 -18.382 +X 0.000 0.000 0.000 +X 15.558 4.635 -1.039 +X 0.000 0.000 0.000 +X 30.378 22.640 -7.963 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.577 6.690 11.050 +X -6.463 -20.388 4.231 +X 17.845 -24.023 30.620 +X 0.000 0.000 0.000 +X 1.660 -7.155 18.340 +X 0.000 0.000 0.000 +X 10.414 -7.099 17.449 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -7.391 9.375 19.034 +X -23.721 0.573 34.796 +X -8.502 14.868 44.513 +X 0.000 0.000 0.000 +X 10.062 13.613 13.937 +X 0.000 0.000 0.000 +X 9.995 27.942 1.997 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 8.534 11.181 -6.347 +X 12.095 8.874 -8.042 +X 0.000 0.000 0.000 +X -1.975 11.090 -34.054 +X 0.000 0.000 0.000 +X 0.622 0.605 -6.476 +X 17.498 2.973 4.968 +X 0.000 0.000 0.000 +X 8.608 2.471 4.234 +X 0.000 0.000 0.000 +X 6.787 3.606 5.422 +X 0.000 0.000 0.000 +X 6.987 7.204 8.645 +X 0.000 0.000 0.000 +X -0.404 3.605 -1.511 +X -10.478 14.754 -11.227 +X -30.961 32.660 -9.155 +X -23.929 33.631 -2.067 +X 0.000 0.000 0.000 +X 2.915 6.476 -5.602 +X 0.000 0.000 0.000 +X 3.081 15.409 -41.947 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -10.149 -6.816 -4.476 +X -13.213 -22.397 -3.804 +X -1.245 15.560 20.069 +X 0.000 0.000 0.000 +X -8.849 -3.139 13.339 +X 0.000 0.000 0.000 +X -28.738 -7.261 27.856 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -15.937 -10.525 3.336 +X -22.014 -24.276 16.228 +X -30.207 -8.317 2.250 +X 0.000 0.000 0.000 +X 3.889 -2.726 -2.963 +X 0.000 0.000 0.000 +X -13.602 15.361 -25.682 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -29.131 22.786 -30.178 +X 0.000 0.000 0.000 +X 0.255 3.787 -2.895 +X 26.520 6.525 -12.432 +X -19.333 11.005 4.213 +X 0.000 0.000 0.000 +X 6.135 1.952 -11.633 +X 0.000 0.000 0.000 +X 3.695 -28.931 2.618 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -5.685 -46.130 11.552 +X 0.000 0.000 0.000 +X 14.196 -2.599 -16.930 +X 23.361 3.012 -19.964 +X 11.224 0.085 -32.719 111 --155.486574 -185.016799 -178.299361 -X -33.208197 -31.005024 -27.833254 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -4.445834 -10.924917 -4.466508 -X 0.000000 0.000000 0.000000 -X -1.190201 -9.839435 11.014879 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 3.811801 -2.160491 -4.643740 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 2.402049 -3.459509 2.585533 -X 13.489412 -16.904386 24.890832 -X 14.489540 -13.107213 5.904693 -X 7.085242 8.733960 2.837273 -X 11.846997 8.185744 -22.887407 -X -4.221024 2.141852 -13.720755 -X 0.000000 0.000000 0.000000 -X 3.189706 3.785274 -9.277039 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 7.744130 7.264699 2.951183 -X 11.169570 -15.657431 25.548263 -X 23.138912 -36.896897 -23.298045 -X 0.000000 0.000000 0.000000 -X 8.000531 1.690682 -13.378695 -X 0.000000 0.000000 0.000000 -X 18.654359 23.747976 -18.710064 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 2.902355 5.399620 7.068442 -X -2.833843 -23.946693 6.503233 -X 23.080040 -21.706362 6.584308 -X 0.000000 0.000000 0.000000 -X 14.116624 -13.735685 12.038978 -X 0.000000 0.000000 0.000000 -X 13.154639 -9.621715 35.243420 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -5.030208 7.974230 19.903060 -X -24.140409 6.333336 35.135711 -X -6.027759 26.746930 45.543056 -X 0.000000 0.000000 0.000000 -X 7.452592 11.309850 13.935187 -X 0.000000 0.000000 0.000000 -X 7.272470 10.762730 9.888983 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 8.343700 12.167359 -4.853096 -X 13.006879 10.806248 -9.567419 -X 0.000000 0.000000 0.000000 -X -4.676385 7.584930 -26.974468 -X 0.000000 0.000000 0.000000 -X 1.605284 1.520115 -2.547379 -X 17.270149 8.181233 1.018524 -X 0.000000 0.000000 0.000000 -X 6.312351 3.817072 1.655516 -X 0.000000 0.000000 0.000000 -X 6.695476 5.176022 4.321064 -X 0.000000 0.000000 0.000000 -X 6.167370 6.738455 5.469285 -X 0.000000 0.000000 0.000000 -X -0.515620 1.887052 -0.173736 -X -11.627695 12.643619 -8.372198 -X -33.460673 32.596560 -7.048305 -X -27.396292 26.021699 12.594854 -X 0.000000 0.000000 0.000000 -X 4.469087 2.651141 -3.547248 -X 0.000000 0.000000 0.000000 -X 12.237227 12.419363 -40.837238 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -8.817862 -3.612856 -3.174225 -X -10.374017 -23.261314 9.176221 -X -18.061632 12.598391 26.500259 -X 0.000000 0.000000 0.000000 -X -10.235892 0.502784 12.168414 -X 0.000000 0.000000 0.000000 -X -10.841919 9.859624 13.984902 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -17.160874 -8.700736 1.331150 -X -22.020781 -24.156327 15.055428 -X -32.067996 3.992555 -8.819552 -X 0.000000 0.000000 0.000000 -X -8.839152 10.154997 -3.471448 -X 0.000000 0.000000 0.000000 -X -12.204848 11.450684 -5.898855 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -26.370570 12.678617 -25.032342 -X 0.000000 0.000000 0.000000 -X 8.294781 -3.583308 -9.932368 -X 22.042803 1.496259 -6.757654 -X -5.921160 4.373903 -8.398567 -X 0.000000 0.000000 0.000000 -X 3.218643 -8.620453 1.836413 -X 0.000000 0.000000 0.000000 -X 4.960585 -27.507594 1.463555 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 1.177018 -38.853355 7.800113 -X 0.000000 0.000000 0.000000 -X 2.767143 0.181954 -8.168247 -X 21.433827 7.601145 -20.918163 -X 8.687552 4.083037 -39.244719 +-155.531 -185.082 -178.353 +X -33.206 -31.014 -27.838 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -4.445 -10.927 -4.467 +X 0.000 0.000 0.000 +X -1.188 -9.842 11.015 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 3.815 -2.164 -4.644 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 2.404 -3.462 2.587 +X 13.490 -16.906 24.891 +X 14.490 -13.109 5.905 +X 7.085 8.730 2.837 +X 11.849 8.178 -22.890 +X -4.220 2.137 -13.721 +X 0.000 0.000 0.000 +X 3.191 3.785 -9.276 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 7.745 7.265 2.952 +X 11.173 -15.658 25.553 +X 23.141 -36.897 -23.297 +X 0.000 0.000 0.000 +X 8.001 1.691 -13.378 +X 0.000 0.000 0.000 +X 18.656 23.748 -18.709 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 2.904 5.400 7.070 +X -2.834 -23.947 6.503 +X 23.083 -21.703 6.590 +X 0.000 0.000 0.000 +X 14.118 -13.733 12.044 +X 0.000 0.000 0.000 +X 13.158 -9.620 35.248 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -5.029 7.976 19.906 +X -24.140 6.337 35.140 +X -6.023 26.758 45.556 +X 0.000 0.000 0.000 +X 7.454 11.313 13.939 +X 0.000 0.000 0.000 +X 7.273 10.764 9.890 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 8.346 12.171 -4.850 +X 13.009 10.808 -9.566 +X 0.000 0.000 0.000 +X -4.667 7.602 -26.966 +X 0.000 0.000 0.000 +X 1.607 1.522 -2.547 +X 17.272 8.184 1.019 +X 0.000 0.000 0.000 +X 6.315 3.819 1.656 +X 0.000 0.000 0.000 +X 6.696 5.177 4.321 +X 0.000 0.000 0.000 +X 6.168 6.739 5.470 +X 0.000 0.000 0.000 +X -0.514 1.889 -0.173 +X -11.628 12.645 -8.371 +X -33.461 32.601 -7.045 +X -27.398 26.026 12.596 +X 0.000 0.000 0.000 +X 4.468 2.653 -3.547 +X 0.000 0.000 0.000 +X 12.238 12.418 -40.837 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -8.818 -3.613 -3.174 +X -10.377 -23.261 9.176 +X -18.064 12.599 26.500 +X 0.000 0.000 0.000 +X -10.236 0.503 12.168 +X 0.000 0.000 0.000 +X -10.843 9.860 13.985 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -17.161 -8.701 1.331 +X -22.026 -24.158 15.053 +X -32.072 3.993 -8.822 +X 0.000 0.000 0.000 +X -8.840 10.155 -3.472 +X 0.000 0.000 0.000 +X -12.212 11.449 -5.905 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -26.385 12.680 -25.041 +X 0.000 0.000 0.000 +X 8.295 -3.583 -9.932 +X 22.041 1.496 -6.759 +X -5.928 4.367 -8.409 +X 0.000 0.000 0.000 +X 3.217 -8.623 1.833 +X 0.000 0.000 0.000 +X 4.959 -27.510 1.461 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 1.173 -38.863 7.792 +X 0.000 0.000 0.000 +X 2.765 0.179 -8.172 +X 21.432 7.598 -20.925 +X 8.684 4.082 -39.252 111 --167.864691 -183.420981 -175.111925 -X -26.514737 -28.898968 -5.890645 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -5.066786 -11.229359 -2.048302 -X 0.000000 0.000000 0.000000 -X -9.774656 -7.761050 -1.041403 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.966381 -9.151327 9.579158 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 2.105971 -3.109016 2.613626 -X 6.368086 -7.973308 11.280436 -X 13.791306 -12.997601 7.448179 -X 7.439369 6.102924 -1.079201 -X 11.449802 1.799144 -24.843477 -X -3.254151 6.787738 -15.005880 -X 0.000000 0.000000 0.000000 -X -0.651889 5.920146 -12.334992 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 4.221502 -2.687306 -2.115527 -X 16.629335 -5.387541 29.274005 -X 25.406501 -14.718108 -23.505693 -X 0.000000 0.000000 0.000000 -X 18.230752 -0.690244 -14.971665 -X 0.000000 0.000000 0.000000 -X 17.972682 0.557362 -16.241302 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.045695 4.281746 7.448332 -X 5.029588 -26.876605 3.613153 -X 23.252558 -19.909532 30.215048 -X 0.000000 0.000000 0.000000 -X 5.975795 -9.602586 17.530833 -X 0.000000 0.000000 0.000000 -X 14.204537 -10.547244 12.796383 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -3.852607 7.522540 21.818316 -X -15.304248 1.662375 34.187837 -X 5.569210 15.667463 50.237512 -X 0.000000 0.000000 0.000000 -X 0.229597 15.767390 7.978655 -X 0.000000 0.000000 0.000000 -X 5.138069 28.593839 4.745415 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 5.355367 12.810511 -5.208235 -X 9.263512 12.402982 -8.236822 -X 0.000000 0.000000 0.000000 -X -9.755459 7.258145 -27.826835 -X 0.000000 0.000000 0.000000 -X -1.166827 -0.204289 -6.006544 -X 17.983874 6.717612 1.039449 -X 0.000000 0.000000 0.000000 -X 8.887704 4.107167 2.294878 -X 0.000000 0.000000 0.000000 -X 6.968766 4.700751 4.010899 -X 0.000000 0.000000 0.000000 -X 7.004773 7.178561 7.693724 -X 0.000000 0.000000 0.000000 -X -0.924812 2.455219 -0.507807 -X -13.629355 13.987387 -7.597899 -X -26.169612 25.930827 4.990167 -X -28.909004 31.822325 -3.766790 -X 0.000000 0.000000 0.000000 -X 8.641581 12.638205 -10.927720 -X 0.000000 0.000000 0.000000 -X 11.699971 6.215825 -41.613934 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -9.679714 -5.477643 -0.734960 -X -10.458103 -32.026282 21.134359 -X 3.351939 17.567883 20.423853 -X 0.000000 0.000000 0.000000 -X -10.645643 0.758358 13.405630 -X 0.000000 0.000000 0.000000 -X -36.931403 5.996180 23.579941 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -17.176737 -8.317004 2.772726 -X -19.941382 -27.166587 16.032036 -X -32.200139 1.065964 6.794568 -X 0.000000 0.000000 0.000000 -X -9.973362 9.680150 -2.787491 -X 0.000000 0.000000 0.000000 -X -16.818780 12.541809 -21.581813 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -28.142993 10.968023 -23.243204 -X 0.000000 0.000000 0.000000 -X 8.698768 -3.070246 -11.523421 -X 18.491743 0.389685 -14.597376 -X -12.252350 5.275869 -0.283120 -X 0.000000 0.000000 0.000000 -X 4.846356 2.021979 -2.396307 -X 0.000000 0.000000 0.000000 -X 3.932450 -27.520868 1.179422 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -5.546528 -45.847850 7.009674 -X 0.000000 0.000000 0.000000 -X 13.335684 0.131501 -16.606684 -X 19.909228 7.071158 -20.286867 -X 10.342826 4.813819 -38.316295 +-167.909 -183.489 -175.151 +X -26.512 -28.911 -5.895 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -5.066 -11.233 -2.050 +X 0.000 0.000 0.000 +X -9.772 -7.766 -1.042 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.970 -9.158 9.579 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 2.109 -3.113 2.615 +X 6.369 -7.975 11.281 +X 13.792 -12.999 7.448 +X 7.440 6.101 -1.079 +X 11.452 1.793 -24.846 +X -3.252 6.783 -15.005 +X 0.000 0.000 0.000 +X -0.652 5.921 -12.335 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 4.223 -2.688 -2.115 +X 16.632 -5.388 29.275 +X 25.409 -14.719 -23.504 +X 0.000 0.000 0.000 +X 18.231 -0.690 -14.971 +X 0.000 0.000 0.000 +X 17.973 0.557 -16.241 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.047 4.282 7.449 +X 5.029 -26.875 3.613 +X 23.256 -19.908 30.220 +X 0.000 0.000 0.000 +X 5.977 -9.601 17.534 +X 0.000 0.000 0.000 +X 14.205 -10.545 12.799 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -3.852 7.525 21.821 +X -15.303 1.669 34.196 +X 5.571 15.676 50.244 +X 0.000 0.000 0.000 +X 0.231 15.769 7.981 +X 0.000 0.000 0.000 +X 5.139 28.596 4.747 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 5.357 12.813 -5.207 +X 9.266 12.406 -8.235 +X 0.000 0.000 0.000 +X -9.751 7.266 -27.825 +X 0.000 0.000 0.000 +X -1.165 -0.203 -6.006 +X 17.987 6.722 1.041 +X 0.000 0.000 0.000 +X 8.891 4.110 2.295 +X 0.000 0.000 0.000 +X 6.971 4.702 4.011 +X 0.000 0.000 0.000 +X 7.006 7.180 7.694 +X 0.000 0.000 0.000 +X -0.923 2.458 -0.507 +X -13.630 13.989 -7.597 +X -26.170 25.937 4.994 +X -28.911 31.830 -3.766 +X 0.000 0.000 0.000 +X 8.642 12.638 -10.928 +X 0.000 0.000 0.000 +X 11.700 6.216 -41.614 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -9.680 -5.478 -0.735 +X -10.462 -32.025 21.134 +X 3.347 17.568 20.423 +X 0.000 0.000 0.000 +X -10.646 0.758 13.406 +X 0.000 0.000 0.000 +X -36.933 5.998 23.581 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -17.177 -8.317 2.773 +X -19.944 -27.169 16.032 +X -32.204 1.066 6.793 +X 0.000 0.000 0.000 +X -9.973 9.680 -2.787 +X 0.000 0.000 0.000 +X -16.822 12.542 -21.585 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -28.162 10.970 -23.254 +X 0.000 0.000 0.000 +X 8.699 -3.071 -11.523 +X 18.489 0.388 -14.599 +X -12.255 5.273 -0.288 +X 0.000 0.000 0.000 +X 4.846 2.021 -2.397 +X 0.000 0.000 0.000 +X 3.930 -27.525 1.175 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -5.550 -45.856 7.003 +X 0.000 0.000 0.000 +X 13.335 0.131 -16.608 +X 19.907 7.069 -20.293 +X 10.341 4.811 -38.321 111 --156.150881 -180.461255 -167.487032 -X -28.628169 -31.162937 -33.534068 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -1.673980 -11.155051 -5.401182 -X 0.000000 0.000000 0.000000 -X 3.335169 -12.005544 7.760949 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -5.611372 -2.133102 6.856419 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 2.536318 -3.304387 2.597451 -X 7.620436 -10.048723 13.367485 -X 26.926472 -14.936871 9.455118 -X 3.219414 7.279800 3.630297 -X 12.891644 5.026763 -22.747715 -X -19.246978 -2.604237 -5.687921 -X 0.000000 0.000000 0.000000 -X -9.980076 2.340333 -7.625906 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.668701 7.676501 2.391965 -X 16.716506 -4.333320 29.475261 -X 17.082865 -16.631875 -21.068407 -X 0.000000 0.000000 0.000000 -X 14.628375 -3.180550 -17.511490 -X 0.000000 0.000000 0.000000 -X 13.542293 -0.384943 -18.161714 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 6.694825 5.910347 6.023406 -X -10.708714 -16.145658 16.898899 -X 15.848057 -25.050187 2.603932 -X 0.000000 0.000000 0.000000 -X 9.403603 -5.552411 14.890088 -X 0.000000 0.000000 0.000000 -X 26.906679 1.131438 31.798615 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.447788 9.874252 17.161955 -X -14.069913 3.892039 32.592242 -X 1.691497 19.519114 35.985303 -X 0.000000 0.000000 0.000000 -X 0.831892 12.953691 5.594299 -X 0.000000 0.000000 0.000000 -X 7.265631 9.555630 8.075465 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 8.045864 12.125943 -5.550327 -X 11.231740 9.625051 -7.892080 -X 0.000000 0.000000 0.000000 -X -8.207681 6.954677 -28.020579 -X 0.000000 0.000000 0.000000 -X -0.939254 1.030726 -3.740295 -X 18.066428 4.240996 1.533811 -X 0.000000 0.000000 0.000000 -X 9.168141 2.394559 2.826452 -X 0.000000 0.000000 0.000000 -X 8.092210 2.546568 5.155582 -X 0.000000 0.000000 0.000000 -X 8.282706 4.747689 6.045340 -X 0.000000 0.000000 0.000000 -X -0.400449 2.783153 -0.970281 -X -12.330178 13.659726 -6.607399 -X -24.686439 26.553259 3.084632 -X -20.203440 29.491321 -14.140010 -X 0.000000 0.000000 0.000000 -X -4.622895 -1.615353 -3.350799 -X 0.000000 0.000000 0.000000 -X 13.633896 19.340503 -12.248471 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -10.848598 -4.955416 -0.670130 -X -18.953917 -22.161485 12.599897 -X -13.646843 15.706642 37.998139 -X 0.000000 0.000000 0.000000 -X -11.154046 -2.909309 12.798307 -X 0.000000 0.000000 0.000000 -X -12.516504 6.978481 16.475280 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -15.818856 -10.878971 0.087233 -X -21.755132 -25.581453 8.470734 -X -32.496397 -6.847317 1.517997 -X 0.000000 0.000000 0.000000 -X -3.286812 -1.144513 -6.789091 -X 0.000000 0.000000 0.000000 -X -13.826341 16.599228 -21.077802 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -33.426191 25.260288 -28.100567 -X 0.000000 0.000000 0.000000 -X 10.980735 1.424741 -12.506667 -X 37.173736 3.778489 -13.819734 -X -11.711733 24.397608 -3.672688 -X 0.000000 0.000000 0.000000 -X 2.460666 -5.737435 -6.977978 -X 0.000000 0.000000 0.000000 -X -1.661353 -27.620057 6.191415 -X 0.000000 0.000000 0.000000 -X 0.000000 0.000000 0.000000 -X -0.188406 -43.009226 6.635462 -X 0.000000 0.000000 0.000000 -X 11.678040 -4.246630 -14.972058 -X 19.269634 3.149055 -19.537478 -X 10.258705 -2.611650 -26.196593 +-156.195 -180.526 -167.536 +X -28.626 -31.171 -33.536 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -1.674 -11.157 -5.402 +X 0.000 0.000 0.000 +X 3.338 -12.009 7.763 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -5.608 -2.138 6.859 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 2.537 -3.305 2.598 +X 7.622 -10.050 13.369 +X 26.928 -14.938 9.456 +X 3.220 7.278 3.629 +X 12.895 5.020 -22.749 +X -19.246 -2.617 -5.688 +X 0.000 0.000 0.000 +X -9.980 2.341 -7.626 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.670 7.676 2.393 +X 16.718 -4.334 29.477 +X 17.083 -16.632 -21.068 +X 0.000 0.000 0.000 +X 14.630 -3.181 -17.511 +X 0.000 0.000 0.000 +X 13.542 -0.385 -18.162 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 6.697 5.910 6.025 +X -10.709 -16.146 16.899 +X 15.851 -25.050 2.609 +X 0.000 0.000 0.000 +X 9.405 -5.551 14.893 +X 0.000 0.000 0.000 +X 26.910 1.131 31.801 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.450 9.877 17.167 +X -14.069 3.896 32.598 +X 1.695 19.525 35.994 +X 0.000 0.000 0.000 +X 0.832 12.956 5.596 +X 0.000 0.000 0.000 +X 7.268 9.560 8.079 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 8.049 12.131 -5.547 +X 11.233 9.631 -7.891 +X 0.000 0.000 0.000 +X -8.201 6.964 -28.017 +X 0.000 0.000 0.000 +X -0.937 1.033 -3.739 +X 18.070 4.243 1.535 +X 0.000 0.000 0.000 +X 9.169 2.395 2.827 +X 0.000 0.000 0.000 +X 8.094 2.547 5.156 +X 0.000 0.000 0.000 +X 8.284 4.749 6.047 +X 0.000 0.000 0.000 +X -0.398 2.785 -0.969 +X -12.330 13.661 -6.607 +X -24.687 26.558 3.087 +X -20.204 29.496 -14.137 +X 0.000 0.000 0.000 +X -4.623 -1.615 -3.351 +X 0.000 0.000 0.000 +X 13.634 19.342 -12.248 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -10.849 -4.956 -0.670 +X -18.955 -22.161 12.600 +X -13.653 15.707 37.998 +X 0.000 0.000 0.000 +X -11.154 -2.910 12.798 +X 0.000 0.000 0.000 +X -12.519 6.980 16.476 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -15.819 -10.879 0.088 +X -21.763 -25.583 8.468 +X -32.502 -6.848 1.515 +X 0.000 0.000 0.000 +X -3.288 -1.145 -6.790 +X 0.000 0.000 0.000 +X -13.831 16.602 -21.081 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -33.441 25.262 -28.112 +X 0.000 0.000 0.000 +X 10.981 1.424 -12.507 +X 37.172 3.777 -13.821 +X -11.717 24.395 -3.681 +X 0.000 0.000 0.000 +X 2.460 -5.738 -6.979 +X 0.000 0.000 0.000 +X -1.662 -27.623 6.189 +X 0.000 0.000 0.000 +X 0.000 0.000 0.000 +X -0.195 -43.016 6.627 +X 0.000 0.000 0.000 +X 11.676 -4.250 -14.978 +X 19.267 3.148 -19.546 +X 10.258 -2.614 -26.202 diff --git a/src/colvar/Implicit.cpp b/src/colvar/Implicit.cpp index 47bd7ea4740ae0336ef59e92dcda40f4bc9927f2..5f3dc191b45f53180f27e3ca59271ca60ff0dabb 100644 --- a/src/colvar/Implicit.cpp +++ b/src/colvar/Implicit.cpp @@ -21,7 +21,6 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* This class was originally written by Thomas Loehr */ -#ifdef ENABLEC11 #include "Colvar.h" #include "ActionRegister.h" @@ -29,26 +28,17 @@ #include "core/PlumedMain.h" #include "core/SetupMolInfo.h" #include "tools/OpenMP.h" - -// These are only required when using the vectorized version -#include "emmintrin.h" -#include "immintrin.h" +#include <initializer_list> #define INV_PI_SQRT_PI 0.179587122 #define KCAL_TO_KJ 4.184 #define ANG_TO_NM 0.1 #define ANG3_TO_NM3 0.001 -#define INNER_LOOP_STRIDE 4 - -// WARNING: Here be dragons! -// Uncomment the next line for SIMD version, which is about 1.25 times faster -// clang will choke on this, gcc requires -mveclibabi=svml, icpc should work just fine -// #define AVXNLLOOP using namespace std; namespace PLMD { - namespace colvar { +namespace colvar { //+PLUMEDOC COLVAR IMPLICIT /* @@ -88,1322 +78,1120 @@ PRINT ARG=solv FILE=SOLV */ //+ENDPLUMEDOC - class Implicit : public Colvar { - private: - bool pbc; - bool tcorr; - double buffer; - unsigned stride; - unsigned nl_update; - vector<vector<unsigned> > nl; - vector<vector<double> > parameter; - map<string, map<string, string> > typemap; - map<string, vector<double> > valuemap; - void setupTypeMap(); - - public: - static void registerKeywords(Keywords& keys); - explicit Implicit(const ActionOptions&); - virtual void calculate(); - void update_neighb(); - void setupConstants(const vector<AtomNumber> &atoms, vector<vector<double> > ¶meter); - }; - - PLUMED_REGISTER_ACTION(Implicit,"IMPLICIT") - - void Implicit::registerKeywords(Keywords& keys) { - Colvar::registerKeywords(keys); - componentsAreNotOptional(keys); - useCustomisableComponents(keys); - keys.add("atoms", "ATOMS", "The atoms to be included in the calculation, e.g. the whole protein."); - keys.add("compulsory", "NL_BUFFER", "The buffer to the intrinsic cutoff used when calculating pairwise interactions."); - keys.add("compulsory", "NL_STRIDE", "The frequency with which the neighbourlist is updated."); - keys.addFlag("TEMP_CORRECTION", false, "Correct free energy of solvation constants for temperatures different from 298.15 K"); - } - - Implicit::Implicit(const ActionOptions&ao): - PLUMED_COLVAR_INIT(ao), - pbc(true), - tcorr(false), - buffer(0.1), - stride(10), - nl_update(0) - { - vector<AtomNumber> atoms; - parseAtomList("ATOMS", atoms); - const unsigned size = atoms.size(); - - parseFlag("TEMP_CORRECTION", tcorr); - parse("NL_BUFFER", buffer); - parse("NL_STRIDE", stride); - - bool nopbc = !pbc; - parseFlag("NOPBC", nopbc); - pbc = !nopbc; - - checkRead(); - - log << " Bibliography " << plumed.cite("Bottaro S, Lindorff-Larsen K, Best R, J. Chem. Theory Comput. 9, 5641 (2013)") - << plumed.cite("Lazaridis T, Karplus M, Proteins Struct. Funct. Genet. 35, 133 (1999)"); log << "\n"; - - - nl.resize(size); - parameter.resize(size); - setupConstants(atoms, parameter); - - addValueWithDerivatives(); - setNotPeriodic(); - requestAtoms(atoms); - } - - void Implicit::update_neighb() { - const double lower_c2 = 0.24 * 0.24; // this is the cut-off for bonded atoms - const unsigned size = getNumberOfAtoms(); - const unsigned nt = OpenMP::getGoodNumThreads(nl); - #pragma omp parallel num_threads(nt) - { - #pragma omp for - for (unsigned i=0; i<size; ++i) { - const Vector posi = getPosition(i); - - // Clear old values, reserve space for new indices - nl[i].clear(); - nl[i].reserve(100); - - // Loop through neighboring atoms, add the ones below cutoff - for (unsigned j=i+1; j<size; ++j) { - const double d2 = delta(posi, getPosition(j)).modulo2(); - if (d2 < lower_c2 && j < i+14) { - // crude approximation for i-i+1/2 interactions, - // we want to exclude atoms separated by less than three bonds - continue; - } +class Implicit : public Colvar { + private: + bool pbc; + double buffer; + double delta_g_ref; + unsigned stride; + unsigned nl_update; + vector<vector<unsigned> > nl; + vector<vector<bool> > nlexpo; + vector<vector<double> > parameter; + void setupConstants(const vector<AtomNumber> &atoms, vector<vector<double> > ¶meter, bool tcorr); + map<string, map<string, string> > setupTypeMap(); + map<string, vector<double> > setupValueMap(); + void update_neighb(); + + public: + static void registerKeywords(Keywords& keys); + explicit Implicit(const ActionOptions&); + virtual void calculate(); +}; + +PLUMED_REGISTER_ACTION(Implicit,"IMPLICIT") + +void Implicit::registerKeywords(Keywords& keys) { + Colvar::registerKeywords(keys); + componentsAreNotOptional(keys); + useCustomisableComponents(keys); + keys.add("atoms", "ATOMS", "The atoms to be included in the calculation, e.g. the whole protein."); + keys.add("compulsory", "NL_BUFFER", "The buffer to the intrinsic cutoff used when calculating pairwise interactions."); + keys.add("compulsory", "NL_STRIDE", "The frequency with which the neighbourlist is updated."); + keys.addFlag("TEMP_CORRECTION", false, "Correct free energy of solvation constants for temperatures different from 298.15 K"); +} - double mlambda = parameter[i][5]; - if (parameter[j][5] > mlambda) { - // We choose the maximum lambda value and use a more conservative cutoff - mlambda = parameter[j][5]; - } +Implicit::Implicit(const ActionOptions&ao): + PLUMED_COLVAR_INIT(ao), + pbc(true), + buffer(0.1), + delta_g_ref(0.), + stride(10), + nl_update(0) +{ + vector<AtomNumber> atoms; + parseAtomList("ATOMS", atoms); + const unsigned size = atoms.size(); + bool tcorr = false; + parseFlag("TEMP_CORRECTION", tcorr); + parse("NL_BUFFER", buffer); + parse("NL_STRIDE", stride); + + bool nopbc = !pbc; + parseFlag("NOPBC", nopbc); + pbc = !nopbc; + + checkRead(); + + log << " Bibliography " << plumed.cite("Bottaro S, Lindorff-Larsen K, Best R, J. Chem. Theory Comput. 9, 5641 (2013)") + << plumed.cite("Lazaridis T, Karplus M, Proteins Struct. Funct. Genet. 35, 133 (1999)"); log << "\n"; + + + nl.resize(size); + nlexpo.resize(size); + parameter.resize(size, vector<double>(4, 0)); + setupConstants(atoms, parameter, tcorr); + + addValueWithDerivatives(); + setNotPeriodic(); + requestAtoms(atoms); +} - double c2 = (3. * mlambda + buffer) * (3. * mlambda + buffer); - if (d2 < c2 ) { - nl[i].push_back(j); - } - } - } +void Implicit::update_neighb() { + const double lower_c2 = 0.24 * 0.24; // this is the cut-off for bonded atoms + const unsigned size = getNumberOfAtoms(); + for (unsigned i=0; i<size; ++i) { + nl[i].clear(); + nlexpo[i].clear(); + const Vector posi = getPosition(i); + // Loop through neighboring atoms, add the ones below cutoff + for (unsigned j=i+1; j<size; ++j) { + const double d2 = delta(posi, getPosition(j)).modulo2(); + if (d2 < lower_c2 && j < i+14) { + // crude approximation for i-i+1/2 interactions, + // we want to exclude atoms separated by less than three bonds + continue; + } + // We choose the maximum lambda value and use a more conservative cutoff + double mlambda = 1./parameter[i][2]; + if (1./parameter[j][2] > mlambda) mlambda = 1./parameter[j][2]; + const double c2 = (4. * mlambda + buffer) * (4. * mlambda + buffer); + if (d2 < c2 ) { + nl[i].push_back(j); + if(parameter[i][2] == parameter[j][2] && parameter[i][3] == parameter[j][3]) { + nlexpo[i].push_back(true); + } else nlexpo[i].push_back(false); } } + } +} -#ifdef AVXNLLOOP - void Implicit::calculate() { - if (pbc) makeWhole(); - if (getExchangeStep()) nl_update = 0; - if (nl_update == 0) update_neighb(); - - const unsigned size = getNumberOfAtoms(); - vector<Vector> fedensity_deriv(size); - double bias = 0.0; - - // Define constants (4 64bit doubles in one 256bit (AVX) register) - const __m256d m_INV_PI_SQRT_PI = _mm256_set1_pd(INV_PI_SQRT_PI); - const __m256d m_ones = _mm256_set1_pd(1.0); - const __m256d m_zero = _mm256_set1_pd(0.0); - - // Main loop over all non-hydrogen atoms - for (unsigned i = 0; i < size; ++i) { - const Vector posi = getPosition(i); - const double delta_g_ref = parameter[i][1]; - - // Get the inner loop size from the neighbourlist - const unsigned inner_size = nl[i].size(); - - // size modulo 4 gives us the size of the remainder - const unsigned inner_remainder = inner_size % INNER_LOOP_STRIDE; - - // Set free-energy density accumulator to 0 - __m256d m_fedensity = _mm256_set1_pd(0.0); - - // Main vectorized loop, we handle 4 values at once - for (unsigned i_nl = 0; i_nl < (inner_size - inner_remainder); i_nl += INNER_LOOP_STRIDE) { - const unsigned j0 = nl[i][i_nl + 0]; - const unsigned j1 = nl[i][i_nl + 1]; - const unsigned j2 = nl[i][i_nl + 2]; - const unsigned j3 = nl[i][i_nl + 3]; - - // Calculate distance vector between atom i and j - const Vector dist0 = delta(posi, getPosition(j0)); - const Vector dist1 = delta(posi, getPosition(j1)); - const Vector dist2 = delta(posi, getPosition(j2)); - const Vector dist3 = delta(posi, getPosition(j3)); - - // Calculate distance between atom i and j - const __m256d m_rij = _mm256_set_pd(dist3.modulo(), - dist2.modulo(), - dist1.modulo(), - dist0.modulo()); - // 1 / r_ij - const __m256d m_inv_rij = _mm256_div_pd(m_ones, m_rij); - // 1 / r_ij^2 - const __m256d m_inv_rij2 = _mm256_mul_pd(m_inv_rij, m_inv_rij); - - // i-j interaction - { - // R_i - const __m256d m_vdwr = _mm256_set1_pd(parameter[i][6]); - const __m256d m_lambda = _mm256_set1_pd(parameter[i][5]); - // 1 / lambda - const __m256d m_inv_lambda = _mm256_div_pd(m_ones, m_lambda); - // 1 / lambda^2 - const __m256d m_inv_lambda2 = _mm256_mul_pd(m_inv_lambda, m_inv_lambda); - // Delta G^free - const __m256d m_delta_g_free = _mm256_set1_pd(parameter[i][2]); - // V_j - const __m256d m_vdw_volume = _mm256_set_pd(parameter[j3][0], - parameter[j2][0], - parameter[j1][0], - parameter[j0][0]); - - // r_ij - R_i - const __m256d m_rij_vdwr_diff = _mm256_sub_pd(m_rij, m_vdwr); - - // exp(-(r_ij - R_i)^2 / lambda^2) - __m256d m_exponent = _mm256_mul_pd(m_rij_vdwr_diff, m_rij_vdwr_diff); - m_exponent = _mm256_mul_pd(m_inv_lambda2, m_exponent); - // _mm256_exp_pd requires SVML - const __m256d m_expo = _mm256_exp_pd(_mm256_sub_pd(m_zero, m_exponent)); - - // Delta G^free * V_j * expo / (lambda * r_ij^2 * pi * sqrt(pi)) - const __m256d m_fact_a = _mm256_mul_pd(m_delta_g_free, m_vdw_volume); - const __m256d m_fact_b = _mm256_mul_pd(m_expo, m_INV_PI_SQRT_PI); - const __m256d m_fact = _mm256_mul_pd(_mm256_mul_pd(m_fact_a, m_fact_b), - _mm256_mul_pd(m_inv_rij2, m_inv_lambda)); - - // (1 / r_ij + (r_ij - R_i) / lambda^2) * 1 / r_ij * fact - __m256d m_deriv = _mm256_add_pd(m_inv_rij, _mm256_mul_pd(m_rij_vdwr_diff, m_inv_lambda2)); - m_deriv = _mm256_mul_pd(_mm256_mul_pd(m_inv_rij, m_fact), m_deriv); - - // Sum up bias and derivatives - m_fedensity = _mm256_add_pd(m_fedensity, m_fact); - fedensity_deriv[i] += m_deriv[0] * dist0; - fedensity_deriv[i] += m_deriv[1] * dist1; - fedensity_deriv[i] += m_deriv[2] * dist2; - fedensity_deriv[i] += m_deriv[3] * dist3; - fedensity_deriv[j0] -= m_deriv[0] * dist0; - fedensity_deriv[j1] -= m_deriv[1] * dist1; - fedensity_deriv[j2] -= m_deriv[2] * dist2; - fedensity_deriv[j3] -= m_deriv[3] * dist3; - } - - // j-i interaction - { - const __m256d m_vdwr = _mm256_set_pd(parameter[j3][6], - parameter[j2][6], - parameter[j1][6], - parameter[j0][6]); - const __m256d m_lambda = _mm256_set_pd(parameter[j3][5], - parameter[j2][5], - parameter[j1][5], - parameter[j0][5]); - const __m256d m_inv_lambda = _mm256_div_pd(m_ones, m_lambda); - const __m256d m_inv_lambda2 = _mm256_mul_pd(m_inv_lambda, m_inv_lambda); - const __m256d m_delta_g_free = _mm256_set_pd(parameter[j3][2], - parameter[j2][2], - parameter[j1][2], - parameter[j0][2]); - const __m256d m_vdw_volume = _mm256_set1_pd(parameter[i][0]); - - const __m256d m_rij_vdwr_diff = _mm256_sub_pd(m_rij, m_vdwr); - __m256d m_exponent = _mm256_mul_pd(m_rij_vdwr_diff, m_rij_vdwr_diff); - m_exponent = _mm256_mul_pd(m_inv_lambda2, m_exponent); - const __m256d m_expo = _mm256_exp_pd(_mm256_sub_pd(m_zero, m_exponent)); - - const __m256d m_fact_a = _mm256_mul_pd(m_delta_g_free, m_vdw_volume); - const __m256d m_fact_b = _mm256_mul_pd(m_expo, m_INV_PI_SQRT_PI); - const __m256d m_fact = _mm256_mul_pd(_mm256_mul_pd(m_fact_a, m_fact_b), - _mm256_mul_pd(m_inv_rij2, m_inv_lambda)); - - __m256d m_deriv = _mm256_add_pd(m_inv_rij, _mm256_mul_pd(m_rij_vdwr_diff, m_inv_lambda2)); - m_deriv = _mm256_mul_pd(_mm256_mul_pd(m_inv_rij, m_fact), m_deriv); +void Implicit::calculate() { + if(pbc) makeWhole(); + if(getExchangeStep()) nl_update = 0; + if (nl_update == 0) { + update_neighb(); + } - m_fedensity = _mm256_add_pd(m_fedensity, m_fact); - fedensity_deriv[i] += m_deriv[0] * dist0; - fedensity_deriv[i] += m_deriv[1] * dist1; - fedensity_deriv[i] += m_deriv[2] * dist2; - fedensity_deriv[i] += m_deriv[3] * dist3; - fedensity_deriv[j0] -= m_deriv[0] * dist0; - fedensity_deriv[j1] -= m_deriv[1] * dist1; - fedensity_deriv[j2] -= m_deriv[2] * dist2; - fedensity_deriv[j3] -= m_deriv[3] * dist3; - } + const unsigned size=getNumberOfAtoms(); + double bias = 0.0; + Tensor deriv_box; + unsigned nt=OpenMP::getNumThreads(); + const unsigned nn=nl.size(); + if(nt*10>nn) nt=nn/10; + if(nt==0)nt=1; + #pragma omp parallel num_threads(nt) + { + vector<Vector> deriv_omp(size); + #pragma omp for reduction(+:bias) + for (unsigned i=0; i<size; ++i) { + const Vector posi = getPosition(i); + double fedensity = 0.0; + Vector deriv_i; + const double vdw_volume_i = parameter[i][0]; + const double delta_g_free_i = parameter[i][1]; + const double inv_lambda_i = parameter[i][2]; + const double vdw_radius_i = parameter[i][3]; + + // The pairwise interactions are unsymmetric, but we can get away with calculating the distance only once + for (unsigned i_nl=0; i_nl<nl[i].size(); ++i_nl) { + const unsigned j = nl[i][i_nl]; + const double vdw_volume_j = parameter[j][0]; + const double delta_g_free_j = parameter[j][1]; + const double inv_lambda_j = parameter[j][2]; + const double vdw_radius_j = parameter[j][3]; + + const Vector dist = delta(posi, getPosition(j)); + const double rij = dist.modulo(); + const double inv_rij = 1.0 / rij; + const double inv_rij2 = inv_rij * inv_rij; + const double fact_ij = inv_rij2 * delta_g_free_i * vdw_volume_j * INV_PI_SQRT_PI* inv_lambda_i; + const double fact_ji = inv_rij2 * delta_g_free_j * vdw_volume_i * INV_PI_SQRT_PI* inv_lambda_j; + double deriv = 0.; + + // in this case we can calculate a single exponential + if(!nlexpo[i][i_nl]) { + // i-j interaction + if(inv_rij > 0.25*inv_lambda_i) + { + const double inv_lambda2_i = inv_lambda_i * inv_lambda_i; + const double rij_vdwr_diff = rij - vdw_radius_i; + const double expo = exp(-inv_lambda2_i * rij_vdwr_diff * rij_vdwr_diff); + const double fact = expo * fact_ij; + fedensity += fact; + deriv += inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2_i); + } + + // j-i interaction + if(inv_rij > 0.25*inv_lambda_j) + { + const double inv_lambda2_j = inv_lambda_j * inv_lambda_j; + const double rij_vdwr_diff = rij - vdw_radius_j; + const double expo = exp(-inv_lambda2_j * rij_vdwr_diff * rij_vdwr_diff); + const double fact = expo * fact_ji; + fedensity += fact; + deriv += inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2_j); + } + } else { + // i-j interaction + if(inv_rij > 0.25*inv_lambda_i) + { + const double inv_lambda2 = inv_lambda_i * inv_lambda_i; + const double rij_vdwr_diff = rij - vdw_radius_i; + const double expo = exp(-inv_lambda2 * rij_vdwr_diff * rij_vdwr_diff); + const double fact = expo*(fact_ij + fact_ji); + fedensity += fact; + deriv += inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2); + } } - // Sum up 4 elements of vector - double fedensity = m_fedensity[0] + m_fedensity[1] + m_fedensity[2] + m_fedensity[3]; - - // Remainder loop, like the generic version, but max 3 iterations - for (unsigned i_nl = (inner_size - inner_remainder); i_nl < inner_size; ++i_nl) { - const unsigned j = nl[i][i_nl]; - const Vector dist = delta(posi, getPosition(j)); - const double rij = dist.modulo(); - const double inv_rij = 1.0 / rij; - const double inv_rij2 = inv_rij * inv_rij; - - // i-j interaction - if(rij < 3.*parameter[i][5]) - { - const double delta_g_free = parameter[i][2]; - const double lambda = parameter[i][5]; - const double vdw_radius = parameter[i][6]; - const double inv_lambda = 1.0 / lambda; - const double inv_lambda2 = inv_lambda * inv_lambda; - const double vdw_volume = parameter[j][0]; - - const double rij_vdwr_diff = rij - vdw_radius; - const double expo = exp(-inv_lambda2 * rij_vdwr_diff * rij_vdwr_diff); - const double fact = delta_g_free * vdw_volume * expo * INV_PI_SQRT_PI * inv_rij2 * inv_lambda; - const double deriv = inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2); - - fedensity += fact; - fedensity_deriv[i] += deriv * dist; - fedensity_deriv[j] -= deriv * dist; - } + const Vector dd = deriv*dist; + deriv_i += dd; + deriv_omp[j] -= dd; + } + deriv_omp[i] += deriv_i; + bias += - 0.5 * fedensity; + } + #pragma omp critical + for(unsigned i=0;i<size;i++) { + setAtomsDerivatives(i, -deriv_omp[i]); + deriv_box += Tensor(getPosition(i), -deriv_omp[i]); + } + } - // j-i interaction - if(rij < 3.*parameter[j][5]) - { - const double delta_g_free = parameter[j][2]; - const double lambda = parameter[j][5]; - const double vdw_radius = parameter[j][6]; - const double inv_lambda = 1.0 / lambda; - const double inv_lambda2 = inv_lambda * inv_lambda; - const double vdw_volume = parameter[i][0]; + setBoxDerivatives(-deriv_box); + setValue(delta_g_ref + bias); - const double rij_vdwr_diff = rij - vdw_radius; - const double expo = exp(-inv_lambda2 * rij_vdwr_diff * rij_vdwr_diff); - const double fact = delta_g_free * vdw_volume * expo * INV_PI_SQRT_PI * inv_rij2 * inv_lambda; - const double deriv = inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2); + // Keep track of the neighbourlist updates + ++nl_update; + if (nl_update == stride) { + nl_update = 0; + } +} - fedensity += fact; - fedensity_deriv[i] += deriv * dist; - fedensity_deriv[j] -= deriv * dist; - } +void Implicit::setupConstants(const vector<AtomNumber> &atoms, vector<vector<double> > ¶meter, bool tcorr) { + vector<vector<double> > parameter_temp; + parameter_temp.resize(atoms.size()); + map<string, vector<double> > valuemap; + map<string, map<string, string> > typemap; + valuemap = setupValueMap(); + typemap = setupTypeMap(); + vector<SetupMolInfo*> moldat = plumed.getActionSet().select<SetupMolInfo*>(); + if (moldat.size() == 1) { + log << " MOLINFO DATA found, using proper atom names\n"; + for(unsigned i=0; i<atoms.size(); ++i) { + + // Get atom and residue names + string Aname = moldat[0]->getAtomName(atoms[i]); + string Rname = moldat[0]->getResidueName(atoms[i]); + string Atype = typemap[Rname][Aname]; + + // Check for terminal COOH or COO- (different atomtypes & parameters!) + if (moldat[0]->getAtomName(atoms[i]) == "OT1") { + // We create a temporary AtomNumber object to access future atoms + unsigned ai = atoms[i].index(); + AtomNumber tmp_an; + tmp_an.setIndex(ai + 2); + if (moldat[0]->getAtomName(tmp_an) == "HT2") { + // COOH + Atype = "OB"; + } else { + // COO- + Atype = "OC"; } - bias += delta_g_ref - 0.5 * fedensity; } - - Tensor deriv_box; - for (unsigned i=0; i<size; ++i) { - setAtomsDerivatives(i, -fedensity_deriv[i]); - deriv_box += Tensor(getPosition(i), -fedensity_deriv[i]); + if (moldat[0]->getAtomName(atoms[i]) == "OT2") { + unsigned ai = atoms[i].index(); + AtomNumber tmp_an; + tmp_an.setIndex(ai + 1); + if (moldat[0]->getAtomName(tmp_an) == "HT2") { + // COOH + Atype = "OH1"; + } else { + // COO- + Atype = "OC"; + } } - setBoxDerivatives(-deriv_box); - setValue(bias); - // Keep track of the neighbourlist updates - ++nl_update; - if (nl_update == stride) { - nl_update = 0; - } - } + // Check for H-atoms + char type; + char first = Aname.at(0); -#else - void Implicit::calculate() { - if(pbc) makeWhole(); - if(getExchangeStep()) nl_update = 0; - if (nl_update == 0) { - update_neighb(); + // GOLDEN RULE: type is first letter, if not a number + if (!isdigit(first)){ + type = first; + // otherwise is the second + } else { + type = Aname.at(1); } - const unsigned size=getNumberOfAtoms(); - vector<Vector> fedensity_deriv(size); - double bias = 0.0; - - const unsigned nt = OpenMP::getGoodNumThreads(nl); - #pragma omp parallel num_threads(nt) - { - #pragma omp for reduction(+:bias) - for (unsigned i=0; i<size; ++i) { - const Vector posi = getPosition(i); - const double delta_g_ref = parameter[i][1]; - double fedensity = 0.0; - - // The pairwise interactions are unsymmetric, but we can get away with calculating the distance only once - for (unsigned i_nl=0; i_nl<nl[i].size(); ++i_nl) { - const unsigned j = nl[i][i_nl]; - const Vector dist = delta(posi, getPosition(j)); - const double rij = dist.modulo(); - const double inv_rij = 1.0 / rij; - const double inv_rij2 = inv_rij * inv_rij; - - // i-j interaction - if(rij < 3.*parameter[i][5]) - { - const double delta_g_free = parameter[i][2]; - const double lambda = parameter[i][5]; - const double vdw_radius = parameter[i][6]; - const double inv_lambda = 1.0 / lambda; - const double inv_lambda2 = inv_lambda * inv_lambda; - const double vdw_volume = parameter[j][0]; - - const double rij_vdwr_diff = rij - vdw_radius; - const double expo = exp(-inv_lambda2 * rij_vdwr_diff * rij_vdwr_diff); - const double fact = delta_g_free * vdw_volume * expo * INV_PI_SQRT_PI * inv_rij2 * inv_lambda; - const double deriv = inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2); - - // This is needed for correct box derivs - #pragma omp critical(deriv) - { - fedensity += fact; - fedensity_deriv[i] += deriv * dist; - fedensity_deriv[j] -= deriv * dist; - } - } - - // j-i interaction - if(rij < 3.*parameter[j][5]) - { - const double delta_g_free = parameter[j][2]; - const double lambda = parameter[j][5]; - const double vdw_radius = parameter[j][6]; - const double inv_lambda = 1.0 / lambda; - const double inv_lambda2 = inv_lambda * inv_lambda; - const double vdw_volume = parameter[i][0]; - - const double rij_vdwr_diff = rij - vdw_radius; - const double expo = exp(-inv_lambda2 * rij_vdwr_diff * rij_vdwr_diff); - const double fact = delta_g_free * vdw_volume * expo * INV_PI_SQRT_PI * inv_rij2 * inv_lambda; - const double deriv = inv_rij * fact * (inv_rij + rij_vdwr_diff * inv_lambda2); - - #pragma omp critical(deriv) - { - fedensity += fact; - fedensity_deriv[i] += deriv * dist; - fedensity_deriv[j] -= deriv * dist; - } - } - } - bias += delta_g_ref - 0.5 * fedensity; - } + if (type == 'H') { + error("EEF1-SB does not allow the use of hydrogen atoms!\n"); } - Tensor deriv_box; - const unsigned ntd = OpenMP::getGoodNumThreads(fedensity_deriv); - { - for (unsigned i=0; i<size; ++i) { - setAtomsDerivatives(i, -fedensity_deriv[i]); - deriv_box += Tensor(getPosition(i), -fedensity_deriv[i]); - } + // Lookup atomtype in table or throw exception if its not there + try { + parameter_temp[i] = valuemap.at(Atype); + } catch (exception &e) { + log << "Type: " << Atype << " Name: " << Aname << " Residue: " << Rname << "\n"; + error("Invalid atom type!\n"); } - setBoxDerivatives(-deriv_box); - setValue(bias); - - // Keep track of the neighbourlist updates - ++nl_update; - if (nl_update == stride) { - nl_update = 0; + // Temperature correction + if (tcorr && parameter[i][1] > 0.0) { + const double t0 = 298.15; + const double delta_g_ref_t0 = parameter_temp[i][1]; + const double delta_h_ref_t0 = parameter_temp[i][3]; + const double delta_cp = parameter_temp[i][4]; + const double delta_s_ref_t0 = (delta_h_ref_t0 - delta_g_ref_t0) / t0; + const double t = plumed.getAtoms().getKbT() / plumed.getAtoms().getKBoltzmann(); + parameter_temp[i][1] -= delta_s_ref_t0 * (t - t0) - delta_cp * t * std::log(t / t0) + delta_cp * (t - t0); + parameter_temp[i][2] *= parameter_temp[i][1] / delta_g_ref_t0; } + parameter[i][0] = parameter_temp[i][0]; + parameter[i][1] = parameter_temp[i][2]; + parameter[i][2] = parameter_temp[i][5]; + parameter[i][3] = parameter_temp[i][6]; } -#endif - - void Implicit::setupConstants(const vector<AtomNumber> &atoms, vector<vector<double> > ¶meter) { - setupTypeMap(); - vector<SetupMolInfo*> moldat = plumed.getActionSet().select<SetupMolInfo*>(); - if (moldat.size() == 1) { - log << " MOLINFO DATA found, using proper atom names\n"; - for(unsigned i=0; i<atoms.size(); ++i) { - - // Get atom and residue names - string Aname = moldat[0]->getAtomName(atoms[i]); - string Rname = moldat[0]->getResidueName(atoms[i]); - string Atype = typemap[Rname][Aname]; - - // Check for terminal COOH or COO- (different atomtypes & parameters!) - if (moldat[0]->getAtomName(atoms[i]) == "OT1") { - // We create a temporary AtomNumber object to access future atoms - unsigned ai = atoms[i].index(); - AtomNumber tmp_an; - tmp_an.setIndex(ai + 2); - if (moldat[0]->getAtomName(tmp_an) == "HT2") { - // COOH - Atype = "OB"; - } else { - // COO- - Atype = "OC"; - } - } - if (moldat[0]->getAtomName(atoms[i]) == "OT2") { - unsigned ai = atoms[i].index(); - AtomNumber tmp_an; - tmp_an.setIndex(ai + 1); - if (moldat[0]->getAtomName(tmp_an) == "HT2") { - // COOH - Atype = "OH1"; - } else { - // COO- - Atype = "OC"; - } - } - - // Check for H-atoms - char type; - char first = Aname.at(0); - - // GOLDEN RULE: type is first letter, if not a number - if (!isdigit(first)){ - type = first; - // otherwise is the second - } else { - type = Aname.at(1); - } - - if (type == 'H') { - error("EEF1-SB does not allow the use of hydrogen atoms!\n"); - } - - // Lookup atomtype in table or throw exception if its not there - try { - parameter[i] = valuemap.at(Atype); - } catch (exception &e) { - log << "Type: " << Atype << " Name: " << Aname << " Residue: " << Rname << "\n"; - error("Invalid atom type!\n"); - } + } else { + error("MOLINFO DATA not found\n"); + } + for(unsigned i=0; i<atoms.size(); ++i) delta_g_ref += parameter_temp[i][1]; +} - // Temperature correction - if (tcorr && parameter[i][1] > 0.0) { - const double t0 = 298.15; - const double delta_g_ref_t0 = parameter[i][1]; - const double delta_h_ref_t0 = parameter[i][3]; - const double delta_cp = parameter[i][4]; - const double delta_s_ref_t0 = (delta_h_ref_t0 - delta_g_ref_t0) / t0; - const double t = plumed.getAtoms().getKbT() / plumed.getAtoms().getKBoltzmann(); - parameter[i][1] -= delta_s_ref_t0 * (t - t0) - delta_cp * t * std::log(t / t0) + delta_cp * (t - t0); - parameter[i][2] *= parameter[i][1] / delta_g_ref_t0; - } +map<string, map<string, string> > Implicit::setupTypeMap() { + map<string, map<string, string> > typemap; + typemap = { + {"ALA", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT3"}, + {"HB1", "HA3"}, + {"HB2", "HA3"}, + {"HB3", "HA3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"ARG", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"CD", "CT2"}, + {"HD1", "HA2"}, + {"HD2", "HA2"}, + {"NE", "NC2"}, + {"HE", "HC" }, + {"CZ", "C" }, + {"NH1", "NC2"}, + {"HH11", "HC" }, + {"HH12", "HC" }, + {"NH2", "NC2"}, + {"HH21", "HC" }, + {"HH22", "HC" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"ASN", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CC" }, + {"OD1", "O" }, + {"ND2", "NH2"}, + {"HD21", "H" }, + {"HD22", "H" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"ASPP", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CD" }, + {"OD1", "OB" }, + {"OD2", "OH1"}, + {"HD2", "H" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"ASP", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CC" }, + {"OD1", "OC" }, + {"OD2", "OC" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"CYS", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"SG", "S" }, + {"HG1", "HS" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"GLN", { + {"N", "NH1" }, + {"HN", "H" }, + {"CA", "CT1" }, + {"HA", "HB1" }, + {"CB", "CT2" }, + {"HB1", "HA2" }, + {"HB2", "HA2" }, + {"CG", "CT2" }, + {"HG1", "HA2" }, + {"HG2", "HA2" }, + {"CD", "CC" }, + {"OE1", "O" }, + {"NE2", "NH2" }, + {"HE21", "H" }, + {"HE22", "H" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"GLUP", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"CD", "CD" }, + {"OE1", "OB" }, + {"OE2", "OH1"}, + {"HE2", "H" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"GLU", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"CD", "CC" }, + {"OE1", "OC" }, + {"OE2", "OC" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"GLY", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT2"}, + {"HA1", "HB2"}, + {"HA2", "HB2"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"HSD", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"ND1", "NR1"}, + {"HD1", "H" }, + {"CG", "CPH1"}, + {"CE1", "CPH2"}, + {"HE1", "HR1"}, + {"NE2", "NR2"}, + {"CD2", "CPH1"}, + {"HD2", "HR3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"HIS", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"ND1", "NR2"}, + {"CG", "CPH1"}, + {"CE1", "CPH2"}, + {"HE1", "HR1"}, + {"NE2", "NR1"}, + {"HE2", "H" }, + {"CD2", "CPH1"}, + {"HD2", "HR3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"HSE", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"ND1", "NR2"}, + {"CG", "CPH1"}, + {"CE1", "CPH2"}, + {"HE1", "HR1"}, + {"NE2", "NR1"}, + {"HE2", "H" }, + {"CD2", "CPH1"}, + {"HD2", "HR3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"HSP", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CD2", "CPH1"}, + {"HD2", "HR1"}, + {"CG", "CPH1"}, + {"NE2", "NR3"}, + {"HE2", "H" }, + {"ND1", "NR3"}, + {"HD1", "H" }, + {"CE1", "CPH2"}, + {"HE1", "HR2"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"ILE", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT1"}, + {"HB", "HA1"}, + {"CG2", "CT3"}, + {"HG21", "HA3"}, + {"HG22", "HA3"}, + {"HG23", "HA3"}, + {"CG1", "CT2"}, + {"HG11", "HA2"}, + {"HG12", "HA2"}, + {"CD", "CT3"}, + {"HD1", "HA3"}, + {"HD2", "HA3"}, + {"HD3", "HA3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"LEU", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT1"}, + {"HG", "HA1"}, + {"CD1", "CT3"}, + {"HD11", "HA3"}, + {"HD12", "HA3"}, + {"HD13", "HA3"}, + {"CD2", "CT3"}, + {"HD21", "HA3"}, + {"HD22", "HA3"}, + {"HD23", "HA3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"LYS", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"CD", "CT2"}, + {"HD1", "HA2"}, + {"HD2", "HA2"}, + {"CE", "CT2"}, + {"HE1", "HA2"}, + {"HE2", "HA2"}, + {"NZ", "NH3"}, + {"HZ1", "HC" }, + {"HZ2", "HC" }, + {"HZ3", "HC" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"MET", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CT2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"SD", "S" }, + {"CE", "CT3"}, + {"HE1", "HA3"}, + {"HE2", "HA3"}, + {"HE3", "HA3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"PHE", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CA" }, + {"CD1", "CA" }, + {"HD1", "HP" }, + {"CE1", "CA" }, + {"HE1", "HP" }, + {"CZ", "CA" }, + {"HZ", "HP" }, + {"CD2", "CA" }, + {"HD2", "HP" }, + {"CE2", "CA" }, + {"HE2", "HP" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"PRO", { + {"N", "N" }, + {"CD", "CP3"}, + {"HD1", "HA2"}, + {"HD2", "HA2"}, + {"CA", "CP1"}, + {"HA", "HB1"}, + {"CB", "CP2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CP2"}, + {"HG1", "HA2"}, + {"HG2", "HA2"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"SER", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"OG", "OH1"}, + {"HG1", "H" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"THR", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT1"}, + {"HB", "HA1"}, + {"OG1", "OH1"}, + {"HG1", "H" }, + {"CG2", "CT3"}, + {"HG21", "HA3"}, + {"HG22", "HA3"}, + {"HG23", "HA3"}, + {"C", "C" }, + {"O", "O" } + } + }, + {"TRP", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CY" }, + {"CD1", "CA" }, + {"HD1", "HP" }, + {"NE1", "NY" }, + {"HE1", "H" }, + {"CE2", "CPT"}, + {"CD2", "CPT"}, + {"CE3", "CAI"}, + {"HE3", "HP" }, + {"CZ3", "CA" }, + {"HZ3", "HP" }, + {"CZ2", "CAI"}, + {"HZ2", "HP" }, + {"CH2", "CA" }, + {"HH2", "HP" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"TYR", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT2"}, + {"HB1", "HA2"}, + {"HB2", "HA2"}, + {"CG", "CA" }, + {"CD1", "CA" }, + {"HD1", "HP" }, + {"CE1", "CA" }, + {"HE1", "HP" }, + {"CZ", "CA" }, + {"OH", "OH1"}, + {"HH", "H" }, + {"CD2", "CA" }, + {"HD2", "HP" }, + {"CE2", "CA" }, + {"HE2", "HP" }, + {"C", "C" }, + {"O", "O" } + } + }, + {"VAL", { + {"N", "NH1"}, + {"HN", "H" }, + {"CA", "CT1"}, + {"HA", "HB1"}, + {"CB", "CT1"}, + {"HB", "HA1"}, + {"CG1", "CT3"}, + {"HG11", "HA3"}, + {"HG12", "HA3"}, + {"HG13", "HA3"}, + {"CG2", "CT3"}, + {"HG21", "HA3"}, + {"HG22", "HA3"}, + {"HG23", "HA3"}, + {"C", "C" }, + {"O", "O" } } - } else { - error("MOLINFO DATA not found\n"); - } } + }; + return typemap; +} - void Implicit::setupTypeMap() { - typemap = { - {"ALA", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT3"}, - {"HB1", "HA3"}, - {"HB2", "HA3"}, - {"HB3", "HA3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"ARG", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"CD", "CT2"}, - {"HD1", "HA2"}, - {"HD2", "HA2"}, - {"NE", "NC2"}, - {"HE", "HC" }, - {"CZ", "C" }, - {"NH1", "NC2"}, - {"HH11", "HC" }, - {"HH12", "HC" }, - {"NH2", "NC2"}, - {"HH21", "HC" }, - {"HH22", "HC" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"ASN", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CC" }, - {"OD1", "O" }, - {"ND2", "NH2"}, - {"HD21", "H" }, - {"HD22", "H" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"ASPP", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CD" }, - {"OD1", "OB" }, - {"OD2", "OH1"}, - {"HD2", "H" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"ASP", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CC" }, - {"OD1", "OC" }, - {"OD2", "OC" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"CYS", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"SG", "S" }, - {"HG1", "HS" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"GLN", { - {"N", "NH1" }, - {"HN", "H" }, - {"CA", "CT1" }, - {"HA", "HB1" }, - {"CB", "CT2" }, - {"HB1", "HA2" }, - {"HB2", "HA2" }, - {"CG", "CT2" }, - {"HG1", "HA2" }, - {"HG2", "HA2" }, - {"CD", "CC" }, - {"OE1", "O" }, - {"NE2", "NH2" }, - {"HE21", "H" }, - {"HE22", "H" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"GLUP", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"CD", "CD" }, - {"OE1", "OB" }, - {"OE2", "OH1"}, - {"HE2", "H" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"GLU", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"CD", "CC" }, - {"OE1", "OC" }, - {"OE2", "OC" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"GLY", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT2"}, - {"HA1", "HB2"}, - {"HA2", "HB2"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"HSD", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"ND1", "NR1"}, - {"HD1", "H" }, - {"CG", "CPH1"}, - {"CE1", "CPH2"}, - {"HE1", "HR1"}, - {"NE2", "NR2"}, - {"CD2", "CPH1"}, - {"HD2", "HR3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"HIS", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"ND1", "NR2"}, - {"CG", "CPH1"}, - {"CE1", "CPH2"}, - {"HE1", "HR1"}, - {"NE2", "NR1"}, - {"HE2", "H" }, - {"CD2", "CPH1"}, - {"HD2", "HR3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"HSE", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"ND1", "NR2"}, - {"CG", "CPH1"}, - {"CE1", "CPH2"}, - {"HE1", "HR1"}, - {"NE2", "NR1"}, - {"HE2", "H" }, - {"CD2", "CPH1"}, - {"HD2", "HR3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"HSP", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CD2", "CPH1"}, - {"HD2", "HR1"}, - {"CG", "CPH1"}, - {"NE2", "NR3"}, - {"HE2", "H" }, - {"ND1", "NR3"}, - {"HD1", "H" }, - {"CE1", "CPH2"}, - {"HE1", "HR2"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"ILE", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT1"}, - {"HB", "HA1"}, - {"CG2", "CT3"}, - {"HG21", "HA3"}, - {"HG22", "HA3"}, - {"HG23", "HA3"}, - {"CG1", "CT2"}, - {"HG11", "HA2"}, - {"HG12", "HA2"}, - {"CD", "CT3"}, - {"HD1", "HA3"}, - {"HD2", "HA3"}, - {"HD3", "HA3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"LEU", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT1"}, - {"HG", "HA1"}, - {"CD1", "CT3"}, - {"HD11", "HA3"}, - {"HD12", "HA3"}, - {"HD13", "HA3"}, - {"CD2", "CT3"}, - {"HD21", "HA3"}, - {"HD22", "HA3"}, - {"HD23", "HA3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"LYS", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"CD", "CT2"}, - {"HD1", "HA2"}, - {"HD2", "HA2"}, - {"CE", "CT2"}, - {"HE1", "HA2"}, - {"HE2", "HA2"}, - {"NZ", "NH3"}, - {"HZ1", "HC" }, - {"HZ2", "HC" }, - {"HZ3", "HC" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"MET", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CT2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"SD", "S" }, - {"CE", "CT3"}, - {"HE1", "HA3"}, - {"HE2", "HA3"}, - {"HE3", "HA3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"PHE", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CA" }, - {"CD1", "CA" }, - {"HD1", "HP" }, - {"CE1", "CA" }, - {"HE1", "HP" }, - {"CZ", "CA" }, - {"HZ", "HP" }, - {"CD2", "CA" }, - {"HD2", "HP" }, - {"CE2", "CA" }, - {"HE2", "HP" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"PRO", { - {"N", "N" }, - {"CD", "CP3"}, - {"HD1", "HA2"}, - {"HD2", "HA2"}, - {"CA", "CP1"}, - {"HA", "HB1"}, - {"CB", "CP2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CP2"}, - {"HG1", "HA2"}, - {"HG2", "HA2"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"SER", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"OG", "OH1"}, - {"HG1", "H" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"THR", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT1"}, - {"HB", "HA1"}, - {"OG1", "OH1"}, - {"HG1", "H" }, - {"CG2", "CT3"}, - {"HG21", "HA3"}, - {"HG22", "HA3"}, - {"HG23", "HA3"}, - {"C", "C" }, - {"O", "O" } - } - }, - {"TRP", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CY" }, - {"CD1", "CA" }, - {"HD1", "HP" }, - {"NE1", "NY" }, - {"HE1", "H" }, - {"CE2", "CPT"}, - {"CD2", "CPT"}, - {"CE3", "CAI"}, - {"HE3", "HP" }, - {"CZ3", "CA" }, - {"HZ3", "HP" }, - {"CZ2", "CAI"}, - {"HZ2", "HP" }, - {"CH2", "CA" }, - {"HH2", "HP" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"TYR", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT2"}, - {"HB1", "HA2"}, - {"HB2", "HA2"}, - {"CG", "CA" }, - {"CD1", "CA" }, - {"HD1", "HP" }, - {"CE1", "CA" }, - {"HE1", "HP" }, - {"CZ", "CA" }, - {"OH", "OH1"}, - {"HH", "H" }, - {"CD2", "CA" }, - {"HD2", "HP" }, - {"CE2", "CA" }, - {"HE2", "HP" }, - {"C", "C" }, - {"O", "O" } - } - }, - {"VAL", { - {"N", "NH1"}, - {"HN", "H" }, - {"CA", "CT1"}, - {"HA", "HB1"}, - {"CB", "CT1"}, - {"HB", "HA1"}, - {"CG1", "CT3"}, - {"HG11", "HA3"}, - {"HG12", "HA3"}, - {"HG13", "HA3"}, - {"CG2", "CT3"}, - {"HG21", "HA3"}, - {"HG22", "HA3"}, - {"HG23", "HA3"}, - {"C", "C" }, - {"O", "O" } - } +map<string, vector<double> > Implicit::setupValueMap() { + // Volume â†Gref â†Gfree â†H â†Cp λ vdw_radius + map<string, vector<double> > valuemap; + valuemap = { + {"C", { + ANG3_TO_NM3 * 14.720, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.0, + 1. / (ANG_TO_NM * 3.5), + 0.20, + } + }, + {"CD", { + ANG3_TO_NM3 * 14.720, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.0, + 1. / (ANG_TO_NM * 3.5), + 0.20, + } + }, + {"CT1", { + ANG3_TO_NM3 * 11.507, + KCAL_TO_KJ * -0.187, + KCAL_TO_KJ * -0.187, + KCAL_TO_KJ * 0.876, + KCAL_TO_KJ * 0.0, + 1. / (ANG_TO_NM * 3.5), + 0.20, } - }; - - // Volume â†Gref â†Gfree â†H â†Cp λ vdw_radius - valuemap = { - {"C", { - ANG3_TO_NM3 * 14.720, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.0, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CD", { - ANG3_TO_NM3 * 14.720, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.0, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CT1", { - ANG3_TO_NM3 * 11.507, - KCAL_TO_KJ * -0.187, - KCAL_TO_KJ * -0.187, - KCAL_TO_KJ * 0.876, - KCAL_TO_KJ * 0.0, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CT2", { - ANG3_TO_NM3 * 18.850, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * -0.610, - KCAL_TO_KJ * 18.6, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CT2A", { - ANG3_TO_NM3 * 18.666, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * -0.610, - KCAL_TO_KJ * 18.6, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CT3", { - ANG3_TO_NM3 * 27.941, - KCAL_TO_KJ * 1.089, - KCAL_TO_KJ * 1.089, - KCAL_TO_KJ * -1.779, - KCAL_TO_KJ * 35.6, - ANG_TO_NM * 3.5, - 0.204, - } - }, - {"CPH1", { - ANG3_TO_NM3 * 5.275, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * 0.080, - KCAL_TO_KJ * -0.973, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.18, - } - }, - {"CPH2", { - ANG3_TO_NM3 * 11.796, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * 0.080, - KCAL_TO_KJ * -0.973, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.18, - } - }, - {"CPT", { - ANG3_TO_NM3 * 4.669, - KCAL_TO_KJ * -0.890, - KCAL_TO_KJ * -0.890, - KCAL_TO_KJ * 2.220, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.186, - } - }, - {"CY", { - ANG3_TO_NM3 * 10.507, - KCAL_TO_KJ * -0.890, - KCAL_TO_KJ * -0.890, - KCAL_TO_KJ * 2.220, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.199, - } - }, - {"CP1", { - ANG3_TO_NM3 * 25.458, - KCAL_TO_KJ * -0.187, - KCAL_TO_KJ * -0.187, - KCAL_TO_KJ * 0.876, - KCAL_TO_KJ * 0.0, - ANG_TO_NM * 3.5, - 0.227, - } - }, - {"CP2", { - ANG3_TO_NM3 * 19.880, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * -0.610, - KCAL_TO_KJ * 18.6, - ANG_TO_NM * 3.5, - 0.217, - } - }, - {"CP3", { - ANG3_TO_NM3 * 26.731, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * 0.372, - KCAL_TO_KJ * -0.610, - KCAL_TO_KJ * 18.6, - ANG_TO_NM * 3.5, - 0.217, - } - }, - {"CC", { - ANG3_TO_NM3 * 16.539, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.000, - KCAL_TO_KJ * 0.0, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"CAI", { - ANG3_TO_NM3 * 18.249, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * -0.973, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.199, - } - }, - {"CA", { - ANG3_TO_NM3 * 18.249, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * 0.057, - KCAL_TO_KJ * -0.973, - KCAL_TO_KJ * 6.9, - ANG_TO_NM * 3.5, - 0.199, - } - }, - {"N", { - ANG3_TO_NM3 * 0.000, - KCAL_TO_KJ * -1.000, - KCAL_TO_KJ * -1.000, - KCAL_TO_KJ * -1.250, - KCAL_TO_KJ * 8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NR1", { - ANG3_TO_NM3 * 15.273, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -9.059, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NR2", { - ANG3_TO_NM3 * 15.111, - KCAL_TO_KJ * -3.820, - KCAL_TO_KJ * -3.820, - KCAL_TO_KJ * -4.654, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NR3", { - ANG3_TO_NM3 * 15.071, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -9.059, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NH1", { - ANG3_TO_NM3 * 10.197, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -9.059, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NH2", { - ANG3_TO_NM3 * 18.182, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -9.059, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NH3", { - ANG3_TO_NM3 * 18.817, - KCAL_TO_KJ * -20.000, - KCAL_TO_KJ * -20.000, - KCAL_TO_KJ * -25.000, - KCAL_TO_KJ * -18.0, - ANG_TO_NM * 6.0, - 0.185, - } - }, - {"NC2", { - ANG3_TO_NM3 * 18.215, - KCAL_TO_KJ * -10.000, - KCAL_TO_KJ * -10.000, - KCAL_TO_KJ * -12.000, - KCAL_TO_KJ * -7.0, - ANG_TO_NM * 6.0, - 0.185, - } - }, - {"NY", { - ANG3_TO_NM3 * 12.001, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -5.950, - KCAL_TO_KJ * -9.059, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.185, - } - }, - {"NP", { - ANG3_TO_NM3 * 4.993, - KCAL_TO_KJ * -20.000, - KCAL_TO_KJ * -20.000, - KCAL_TO_KJ * -25.000, - KCAL_TO_KJ * -18.0, - ANG_TO_NM * 6.0, - 0.185, - } - }, - {"O", { - ANG3_TO_NM3 * 11.772, - KCAL_TO_KJ * -5.330, - KCAL_TO_KJ * -5.330, - KCAL_TO_KJ * -5.787, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.170, - } - }, - {"OB", { - ANG3_TO_NM3 * 11.694, - KCAL_TO_KJ * -5.330, - KCAL_TO_KJ * -5.330, - KCAL_TO_KJ * -5.787, - KCAL_TO_KJ * -8.8, - ANG_TO_NM * 3.5, - 0.170, - } - }, - {"OC", { - ANG3_TO_NM3 * 12.003, - KCAL_TO_KJ * -10.000, - KCAL_TO_KJ * -10.000, - KCAL_TO_KJ * -12.000, - KCAL_TO_KJ * -9.4, - ANG_TO_NM * 6.0, - 0.170, - } - }, - {"OH1", { - ANG3_TO_NM3 * 15.528, - KCAL_TO_KJ * -5.920, - KCAL_TO_KJ * -5.920, - KCAL_TO_KJ * -9.264, - KCAL_TO_KJ * -11.2, - ANG_TO_NM * 3.5, - 0.177, - } - }, - {"OS", { - ANG3_TO_NM3 * 6.774, - KCAL_TO_KJ * -2.900, - KCAL_TO_KJ * -2.900, - KCAL_TO_KJ * -3.150, - KCAL_TO_KJ * -4.8, - ANG_TO_NM * 3.5, - 0.177, - } - }, - {"S", { - ANG3_TO_NM3 * 20.703, - KCAL_TO_KJ * -3.240, - KCAL_TO_KJ * -3.240, - KCAL_TO_KJ * -4.475, - KCAL_TO_KJ * -39.9, - ANG_TO_NM * 3.5, - 0.20, - } - }, - {"SM", { - ANG3_TO_NM3 * 21.306, - KCAL_TO_KJ * -3.240, - KCAL_TO_KJ * -3.240, - KCAL_TO_KJ * -4.475, - KCAL_TO_KJ * -39.9, - ANG_TO_NM * 3.5, - 0.197, - } + }, + {"CT2", { + ANG3_TO_NM3 * 18.850, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * -0.610, + KCAL_TO_KJ * 18.6, + 1. / (ANG_TO_NM * 3.5), + 0.20, } - }; + }, + {"CT2A", { + ANG3_TO_NM3 * 18.666, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * -0.610, + KCAL_TO_KJ * 18.6, + 1. / (ANG_TO_NM * 3.5), + 0.20, + } + }, + {"CT3", { + ANG3_TO_NM3 * 27.941, + KCAL_TO_KJ * 1.089, + KCAL_TO_KJ * 1.089, + KCAL_TO_KJ * -1.779, + KCAL_TO_KJ * 35.6, + 1. / (ANG_TO_NM * 3.5), + 0.204, + } + }, + {"CPH1", { + ANG3_TO_NM3 * 5.275, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * 0.080, + KCAL_TO_KJ * -0.973, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.18, + } + }, + {"CPH2", { + ANG3_TO_NM3 * 11.796, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * 0.080, + KCAL_TO_KJ * -0.973, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.18, + } + }, + {"CPT", { + ANG3_TO_NM3 * 4.669, + KCAL_TO_KJ * -0.890, + KCAL_TO_KJ * -0.890, + KCAL_TO_KJ * 2.220, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.186, + } + }, + {"CY", { + ANG3_TO_NM3 * 10.507, + KCAL_TO_KJ * -0.890, + KCAL_TO_KJ * -0.890, + KCAL_TO_KJ * 2.220, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.199, + } + }, + {"CP1", { + ANG3_TO_NM3 * 25.458, + KCAL_TO_KJ * -0.187, + KCAL_TO_KJ * -0.187, + KCAL_TO_KJ * 0.876, + KCAL_TO_KJ * 0.0, + 1. / (ANG_TO_NM * 3.5), + 0.227, + } + }, + {"CP2", { + ANG3_TO_NM3 * 19.880, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * -0.610, + KCAL_TO_KJ * 18.6, + 1. / (ANG_TO_NM * 3.5), + 0.217, + } + }, + {"CP3", { + ANG3_TO_NM3 * 26.731, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * 0.372, + KCAL_TO_KJ * -0.610, + KCAL_TO_KJ * 18.6, + 1. / (ANG_TO_NM * 3.5), + 0.217, + } + }, + {"CC", { + ANG3_TO_NM3 * 16.539, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.000, + KCAL_TO_KJ * 0.0, + 1. / (ANG_TO_NM * 3.5), + 0.20, + } + }, + {"CAI", { + ANG3_TO_NM3 * 18.249, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * -0.973, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.199, + } + }, + {"CA", { + ANG3_TO_NM3 * 18.249, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * 0.057, + KCAL_TO_KJ * -0.973, + KCAL_TO_KJ * 6.9, + 1. / (ANG_TO_NM * 3.5), + 0.199, + } + }, + {"N", { + ANG3_TO_NM3 * 0.000, + KCAL_TO_KJ * -1.000, + KCAL_TO_KJ * -1.000, + KCAL_TO_KJ * -1.250, + KCAL_TO_KJ * 8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NR1", { + ANG3_TO_NM3 * 15.273, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -9.059, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NR2", { + ANG3_TO_NM3 * 15.111, + KCAL_TO_KJ * -3.820, + KCAL_TO_KJ * -3.820, + KCAL_TO_KJ * -4.654, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NR3", { + ANG3_TO_NM3 * 15.071, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -9.059, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NH1", { + ANG3_TO_NM3 * 10.197, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -9.059, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NH2", { + ANG3_TO_NM3 * 18.182, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -9.059, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NH3", { + ANG3_TO_NM3 * 18.817, + KCAL_TO_KJ * -20.000, + KCAL_TO_KJ * -20.000, + KCAL_TO_KJ * -25.000, + KCAL_TO_KJ * -18.0, + 1. / (ANG_TO_NM * 6.0), + 0.185, + } + }, + {"NC2", { + ANG3_TO_NM3 * 18.215, + KCAL_TO_KJ * -10.000, + KCAL_TO_KJ * -10.000, + KCAL_TO_KJ * -12.000, + KCAL_TO_KJ * -7.0, + 1. / (ANG_TO_NM * 6.0), + 0.185, + } + }, + {"NY", { + ANG3_TO_NM3 * 12.001, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -5.950, + KCAL_TO_KJ * -9.059, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.185, + } + }, + {"NP", { + ANG3_TO_NM3 * 4.993, + KCAL_TO_KJ * -20.000, + KCAL_TO_KJ * -20.000, + KCAL_TO_KJ * -25.000, + KCAL_TO_KJ * -18.0, + 1. / (ANG_TO_NM * 6.0), + 0.185, + } + }, + {"O", { + ANG3_TO_NM3 * 11.772, + KCAL_TO_KJ * -5.330, + KCAL_TO_KJ * -5.330, + KCAL_TO_KJ * -5.787, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.170, + } + }, + {"OB", { + ANG3_TO_NM3 * 11.694, + KCAL_TO_KJ * -5.330, + KCAL_TO_KJ * -5.330, + KCAL_TO_KJ * -5.787, + KCAL_TO_KJ * -8.8, + 1. / (ANG_TO_NM * 3.5), + 0.170, + } + }, + {"OC", { + ANG3_TO_NM3 * 12.003, + KCAL_TO_KJ * -10.000, + KCAL_TO_KJ * -10.000, + KCAL_TO_KJ * -12.000, + KCAL_TO_KJ * -9.4, + 1. / (ANG_TO_NM * 6.0), + 0.170, + } + }, + {"OH1", { + ANG3_TO_NM3 * 15.528, + KCAL_TO_KJ * -5.920, + KCAL_TO_KJ * -5.920, + KCAL_TO_KJ * -9.264, + KCAL_TO_KJ * -11.2, + 1. / (ANG_TO_NM * 3.5), + 0.177, + } + }, + {"OS", { + ANG3_TO_NM3 * 6.774, + KCAL_TO_KJ * -2.900, + KCAL_TO_KJ * -2.900, + KCAL_TO_KJ * -3.150, + KCAL_TO_KJ * -4.8, + 1. / (ANG_TO_NM * 3.5), + 0.177, + } + }, + {"S", { + ANG3_TO_NM3 * 20.703, + KCAL_TO_KJ * -3.240, + KCAL_TO_KJ * -3.240, + KCAL_TO_KJ * -4.475, + KCAL_TO_KJ * -39.9, + 1. / (ANG_TO_NM * 3.5), + 0.20, + } + }, + {"SM", { + ANG3_TO_NM3 * 21.306, + KCAL_TO_KJ * -3.240, + KCAL_TO_KJ * -3.240, + KCAL_TO_KJ * -4.475, + KCAL_TO_KJ * -39.9, + 1. / (ANG_TO_NM * 3.5), + 0.197, + } } + }; + return valuemap; +} } } -#endif diff --git a/src/gridtools/GridVessel.cpp b/src/gridtools/GridVessel.cpp index a6f413cfbe9ad0d0b0aee3061bd7a1d9c14b3601..dca93e434e57e9b5feb6d8c7db90e7ab7d43d7e5 100644 --- a/src/gridtools/GridVessel.cpp +++ b/src/gridtools/GridVessel.cpp @@ -164,6 +164,7 @@ void GridVessel::getIndices( const std::vector<double>& point, std::vector<unsig for(unsigned i=0;i<dimension;++i){ indices[i]=std::floor( (point[i] - min[i])/dx[i] ); if( pbc[i] ) indices[i]=indices[i]%nbin[i]; + else if( indices[i]>nbin[i] ) plumed_merror("point is outside grid range"); } }