diff --git a/.clang-format b/.clang-format index 19ae969..5bfe370 100644 --- a/.clang-format +++ b/.clang-format @@ -3,3 +3,4 @@ IndentWidth: 4 TabWidth: 4 UseTab: Always BreakBeforeBraces: Attach +ColumnLimit: 100 diff --git a/Makefile b/Makefile index 2d32a85..d6466e6 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ ts := $(shell /usr/bin/date "+%d-%m__%H_%M_%S") .DEFAULT_GOAL = MD MD: $(SRC)/MD.cpp - $(CC) $(CFLAGS) $(SRC)MD.cpp -lm -O2 -ftree-vectorize -funroll-loops -pg -o ./out/MD + $(CC) $(CFLAGS) $(SRC)MD.cpp -lm -O2 -ftree-vectorize -funroll-loops -pg -g -o ./out/MD MDorig: $(SRC)/MD-original.cpp $(CC) $(CFLAGS) $(SRC)MD-original.cpp -lm -O2 -pg -o ./out/MD-original diff --git a/analysis/16-10__16_36_40.dot b/analysis/16-10__16_36_40.dot new file mode 100644 index 0000000..3fafa07 --- /dev/null +++ b/analysis/16-10__16_36_40.dot @@ -0,0 +1,10 @@ +digraph { + graph [fontname=Arial, nodesep=0.125, ranksep=0.25]; + node [fontcolor=white, fontname=Arial, height=0, shape=box, style=filled, width=0]; + edge [fontname=Arial]; + 1 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="main\n100.00%\n(0.00%)"]; + 1 -> 2 [arrowsize="1.00", color="#ff0000", fontcolor="#ff0000", fontsize="10.00", label="100.00%\n201×", labeldistance="4.00", penwidth="4.00"]; + 2 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="VelocityVerlet(double, int, double*, _IO_FILE*)\n100.00%\n(0.00%)\n201×"]; + 2 -> 3 [arrowsize="1.00", color="#ff0000", fontcolor="#ff0000", fontsize="10.00", label="100.00%\n201×", labeldistance="4.00", penwidth="4.00"]; + 3 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="PotentialAndAcceleration()\n100.00%\n(100.00%)\n201×"]; +} diff --git a/analysis/16-10__16_36_40.txt b/analysis/16-10__16_36_40.txt new file mode 100644 index 0000000..759787a --- /dev/null +++ b/analysis/16-10__16_36_40.txt @@ -0,0 +1,177 @@ +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ms/call ms/call name +100.06 2.83 2.83 201 14.09 14.09 PotentialAndAcceleration() + 0.00 2.83 0.00 3240 0.00 0.00 _dl_relocate_static_pie + 0.00 2.83 0.00 201 0.00 14.09 VelocityVerlet(double, int, double*, _IO_FILE*) + 0.00 2.83 0.00 201 0.00 0.00 MeanSquaredVelocity() + 0.00 2.83 0.00 1 0.00 0.00 initialize() + 0.00 2.83 0.00 1 0.00 0.00 computeAccelerations() + 0.00 2.83 0.00 1 0.00 0.00 initializeVelocities() + + % the percentage of the total running time of the +time program used by this function. + +cumulative a running sum of the number of seconds accounted + seconds for by this function and those listed above it. + + self the number of seconds accounted for by this +seconds function alone. This is the major sort for this + listing. + +calls the number of times this function was invoked, if + this function is profiled, else blank. + + self the average number of milliseconds spent in this +ms/call function per call, if this function is profiled, + else blank. + + total the average number of milliseconds spent in this +ms/call function and its descendents per call, if this + function is profiled, else blank. + +name the name of the function. This is the minor sort + for this listing. The index shows the location of + the function in the gprof listing. If the index is + in parenthesis it shows where it would appear in + the gprof listing if it were to be printed. + +Copyright (C) 2012-2023 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + Call graph (explanation follows) + + +granularity: each sample hit covers 2 byte(s) for 0.35% of 2.83 seconds + +index % time self children called name + +[1] 100.0 0.00 2.83 main [1] + 0.00 2.83 201/201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] + 0.00 0.00 201/201 MeanSquaredVelocity() [8] + 0.00 0.00 1/1 computeAccelerations() [10] + 0.00 0.00 1/1 initializeVelocities() [11] + 0.00 0.00 1/1 initialize() [9] +----------------------------------------------- + 0.00 2.83 201/201 main [1] +[2] 100.0 0.00 2.83 201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] + 2.83 0.00 201/201 PotentialAndAcceleration() [3] +----------------------------------------------- + 2.83 0.00 201/201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] +[3] 100.0 2.83 0.00 201 PotentialAndAcceleration() [3] +----------------------------------------------- + 0.00 0.00 3240/3240 initializeVelocities() [11] +[7] 0.0 0.00 0.00 3240 _dl_relocate_static_pie [7] +----------------------------------------------- + 0.00 0.00 201/201 main [1] +[8] 0.0 0.00 0.00 201 MeanSquaredVelocity() [8] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[9] 0.0 0.00 0.00 1 initialize() [9] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[10] 0.0 0.00 0.00 1 computeAccelerations() [10] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[11] 0.0 0.00 0.00 1 initializeVelocities() [11] + 0.00 0.00 3240/3240 _dl_relocate_static_pie [7] +----------------------------------------------- + + This table describes the call tree of the program, and was sorted by + the total amount of time spent in each function and its children. + + Each entry in this table consists of several lines. The line with the + index number at the left hand margin lists the current function. + The lines above it list the functions that called this function, + and the lines below it list the functions this one called. + This line lists: + index A unique number given to each element of the table. + Index numbers are sorted numerically. + The index number is printed next to every function name so + it is easier to look up where the function is in the table. + + % time This is the percentage of the `total' time that was spent + in this function and its children. Note that due to + different viewpoints, functions excluded by options, etc, + these numbers will NOT add up to 100%. + + self This is the total amount of time spent in this function. + + children This is the total amount of time propagated into this + function by its children. + + called This is the number of times the function was called. + If the function called itself recursively, the number + only includes non-recursive calls, and is followed by + a `+' and the number of recursive calls. + + name The name of the current function. The index number is + printed after it. If the function is a member of a + cycle, the cycle number is printed between the + function's name and the index number. + + + For the function's parents, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the function into this parent. + + children This is the amount of time that was propagated from + the function's children into this parent. + + called This is the number of times this parent called the + function `/' the total number of times the function + was called. Recursive calls to the function are not + included in the number after the `/'. + + name This is the name of the parent. The parent's index + number is printed after it. If the parent is a + member of a cycle, the cycle number is printed between + the name and the index number. + + If the parents of the function cannot be determined, the word + `' is printed in the `name' field, and all the other + fields are blank. + + For the function's children, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the child into the function. + + children This is the amount of time that was propagated from the + child's children to the function. + + called This is the number of times the function called + this child `/' the total number of times the child + was called. Recursive calls by the child are not + listed in the number after the `/'. + + name This is the name of the child. The child's index + number is printed after it. If the child is a + member of a cycle, the cycle number is printed + between the name and the index number. + + If there are any cycles (circles) in the call graph, there is an + entry for the cycle-as-a-whole. This entry shows who called the + cycle (as parents) and the members of the cycle (as children.) + The `+' recursive calls entry shows the number of function calls that + were internal to the cycle, and the calls entry for each member shows, + for that member, how many times it was called from other members of + the cycle. + +Copyright (C) 2012-2023 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Index by function name + + [9] initialize() [10] computeAccelerations() [7] _dl_relocate_static_pie + [2] VelocityVerlet(double, int, double*, _IO_FILE*) [11] initializeVelocities() + [8] MeanSquaredVelocity() [3] PotentialAndAcceleration() diff --git a/analysis/16-10__16_44_31.dot b/analysis/16-10__16_44_31.dot new file mode 100644 index 0000000..3fafa07 --- /dev/null +++ b/analysis/16-10__16_44_31.dot @@ -0,0 +1,10 @@ +digraph { + graph [fontname=Arial, nodesep=0.125, ranksep=0.25]; + node [fontcolor=white, fontname=Arial, height=0, shape=box, style=filled, width=0]; + edge [fontname=Arial]; + 1 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="main\n100.00%\n(0.00%)"]; + 1 -> 2 [arrowsize="1.00", color="#ff0000", fontcolor="#ff0000", fontsize="10.00", label="100.00%\n201×", labeldistance="4.00", penwidth="4.00"]; + 2 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="VelocityVerlet(double, int, double*, _IO_FILE*)\n100.00%\n(0.00%)\n201×"]; + 2 -> 3 [arrowsize="1.00", color="#ff0000", fontcolor="#ff0000", fontsize="10.00", label="100.00%\n201×", labeldistance="4.00", penwidth="4.00"]; + 3 [color="#ff0000", fontcolor="#ffffff", fontsize="10.00", label="PotentialAndAcceleration()\n100.00%\n(100.00%)\n201×"]; +} diff --git a/analysis/16-10__16_44_31.txt b/analysis/16-10__16_44_31.txt new file mode 100644 index 0000000..84918cd --- /dev/null +++ b/analysis/16-10__16_44_31.txt @@ -0,0 +1,177 @@ +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ms/call ms/call name +100.06 2.87 2.87 201 14.29 14.29 PotentialAndAcceleration() + 0.00 2.87 0.00 3240 0.00 0.00 _dl_relocate_static_pie + 0.00 2.87 0.00 201 0.00 14.29 VelocityVerlet(double, int, double*, _IO_FILE*) + 0.00 2.87 0.00 201 0.00 0.00 MeanSquaredVelocity() + 0.00 2.87 0.00 1 0.00 0.00 initialize() + 0.00 2.87 0.00 1 0.00 0.00 computeAccelerations() + 0.00 2.87 0.00 1 0.00 0.00 initializeVelocities() + + % the percentage of the total running time of the +time program used by this function. + +cumulative a running sum of the number of seconds accounted + seconds for by this function and those listed above it. + + self the number of seconds accounted for by this +seconds function alone. This is the major sort for this + listing. + +calls the number of times this function was invoked, if + this function is profiled, else blank. + + self the average number of milliseconds spent in this +ms/call function per call, if this function is profiled, + else blank. + + total the average number of milliseconds spent in this +ms/call function and its descendents per call, if this + function is profiled, else blank. + +name the name of the function. This is the minor sort + for this listing. The index shows the location of + the function in the gprof listing. If the index is + in parenthesis it shows where it would appear in + the gprof listing if it were to be printed. + +Copyright (C) 2012-2023 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + Call graph (explanation follows) + + +granularity: each sample hit covers 2 byte(s) for 0.35% of 2.87 seconds + +index % time self children called name + +[1] 100.0 0.00 2.87 main [1] + 0.00 2.87 201/201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] + 0.00 0.00 201/201 MeanSquaredVelocity() [8] + 0.00 0.00 1/1 computeAccelerations() [10] + 0.00 0.00 1/1 initializeVelocities() [11] + 0.00 0.00 1/1 initialize() [9] +----------------------------------------------- + 0.00 2.87 201/201 main [1] +[2] 100.0 0.00 2.87 201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] + 2.87 0.00 201/201 PotentialAndAcceleration() [3] +----------------------------------------------- + 2.87 0.00 201/201 VelocityVerlet(double, int, double*, _IO_FILE*) [2] +[3] 100.0 2.87 0.00 201 PotentialAndAcceleration() [3] +----------------------------------------------- + 0.00 0.00 3240/3240 initializeVelocities() [11] +[7] 0.0 0.00 0.00 3240 _dl_relocate_static_pie [7] +----------------------------------------------- + 0.00 0.00 201/201 main [1] +[8] 0.0 0.00 0.00 201 MeanSquaredVelocity() [8] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[9] 0.0 0.00 0.00 1 initialize() [9] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[10] 0.0 0.00 0.00 1 computeAccelerations() [10] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[11] 0.0 0.00 0.00 1 initializeVelocities() [11] + 0.00 0.00 3240/3240 _dl_relocate_static_pie [7] +----------------------------------------------- + + This table describes the call tree of the program, and was sorted by + the total amount of time spent in each function and its children. + + Each entry in this table consists of several lines. The line with the + index number at the left hand margin lists the current function. + The lines above it list the functions that called this function, + and the lines below it list the functions this one called. + This line lists: + index A unique number given to each element of the table. + Index numbers are sorted numerically. + The index number is printed next to every function name so + it is easier to look up where the function is in the table. + + % time This is the percentage of the `total' time that was spent + in this function and its children. Note that due to + different viewpoints, functions excluded by options, etc, + these numbers will NOT add up to 100%. + + self This is the total amount of time spent in this function. + + children This is the total amount of time propagated into this + function by its children. + + called This is the number of times the function was called. + If the function called itself recursively, the number + only includes non-recursive calls, and is followed by + a `+' and the number of recursive calls. + + name The name of the current function. The index number is + printed after it. If the function is a member of a + cycle, the cycle number is printed between the + function's name and the index number. + + + For the function's parents, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the function into this parent. + + children This is the amount of time that was propagated from + the function's children into this parent. + + called This is the number of times this parent called the + function `/' the total number of times the function + was called. Recursive calls to the function are not + included in the number after the `/'. + + name This is the name of the parent. The parent's index + number is printed after it. If the parent is a + member of a cycle, the cycle number is printed between + the name and the index number. + + If the parents of the function cannot be determined, the word + `' is printed in the `name' field, and all the other + fields are blank. + + For the function's children, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the child into the function. + + children This is the amount of time that was propagated from the + child's children to the function. + + called This is the number of times the function called + this child `/' the total number of times the child + was called. Recursive calls by the child are not + listed in the number after the `/'. + + name This is the name of the child. The child's index + number is printed after it. If the child is a + member of a cycle, the cycle number is printed + between the name and the index number. + + If there are any cycles (circles) in the call graph, there is an + entry for the cycle-as-a-whole. This entry shows who called the + cycle (as parents) and the members of the cycle (as children.) + The `+' recursive calls entry shows the number of function calls that + were internal to the cycle, and the calls entry for each member shows, + for that member, how many times it was called from other members of + the cycle. + +Copyright (C) 2012-2023 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Index by function name + + [9] initialize() [10] computeAccelerations() [7] _dl_relocate_static_pie + [2] VelocityVerlet(double, int, double*, _IO_FILE*) [11] initializeVelocities() + [8] MeanSquaredVelocity() [3] PotentialAndAcceleration() diff --git a/cp_output.txt b/cp_output.txt index 5196ce5..7ca4968 100644 --- a/cp_output.txt +++ b/cp_output.txt @@ -1,202 +1,202 @@ time (s) T(t) (K) P(t) (Pa) Kinetic En. (n.u.) Potential En. (n.u.) Total En. (n.u.) - 0.0000e+00 99.823046157131 0.000000000000 2276.129839537671 -21170.987155723738 -18894.857316186066 + 0.0000e+00 99.823046157131 0.000000000000 2276.129839537671 -21170.987155723738 -18894.857316186070 5.0000e-15 99.430066433986 0.000000000000 2267.169254696612 -21153.065287023051 -18885.896032326440 1.0000e-14 98.775883795075 0.000000000000 2252.252813230883 -21123.229899936763 -18870.977086705880 1.5000e-14 97.862741911230 0.000000000000 2231.431674530326 -21081.582692909291 -18850.151018378965 - 2.0000e-14 96.694206918839 0.000000000000 2204.787152377214 -21028.285410402823 -18823.498258025611 + 2.0000e-14 96.694206918839 0.000000000000 2204.787152377213 -21028.285410402827 -18823.498258025615 2.5000e-14 95.275447081837 0.000000000000 2172.437091700281 -20963.572595040936 -18791.135503340654 3.0000e-14 93.613593183031 0.000000000000 2134.544086090446 -20887.768030660216 -18753.223944569771 - 3.5000e-14 91.718175307735 0.000000000000 2091.325437186824 -20801.304686508829 -18709.979249322005 - 4.0000e-14 89.601625625826 0.000000000000 2043.064618935748 -20704.747699715073 -18661.683080779327 - 4.5000e-14 87.279827237114 0.000000000000 1990.123792168963 -20598.819500558115 -18608.695708389150 - 5.0000e-14 84.772675394773 0.000000000000 1932.956601422036 -20484.425558998624 -18551.468957576588 - 5.5000e-14 82.104599400629 0.000000000000 1872.120075006427 -20362.678405372902 -18490.558330366475 + 3.5000e-14 91.718175307735 0.000000000000 2091.325437186824 -20801.304686508818 -18709.979249321994 + 4.0000e-14 89.601625625826 0.000000000000 2043.064618935748 -20704.747699715081 -18661.683080779334 + 4.5000e-14 87.279827237114 0.000000000000 1990.123792168963 -20598.819500558118 -18608.695708389154 + 5.0000e-14 84.772675394773 0.000000000000 1932.956601422036 -20484.425558998628 -18551.468957576591 + 5.5000e-14 82.104599400629 0.000000000000 1872.120075006427 -20362.678405372910 -18490.558330366483 6.0000e-14 79.304972601851 0.000000000000 1808.283973609195 -20234.916615244118 -18426.632641634922 - 6.5000e-14 76.408318150720 0.000000000000 1742.235481954568 -20102.714524491177 -18360.479042536608 + 6.5000e-14 76.408318150720 0.000000000000 1742.235481954568 -20102.714524491174 -18360.479042536605 7.0000e-14 73.454206638373 0.000000000000 1674.876874684737 -19967.877882713929 -18293.001008029190 - 7.5000e-14 70.486747936098 0.000000000000 1607.213929504612 -19832.420906091691 -18225.206976587080 + 7.5000e-14 70.486747936098 0.000000000000 1607.213929504612 -19832.420906091687 -18225.206976587076 8.0000e-14 67.553612281810 0.000000000000 1540.333606341292 -19698.521671778017 -18158.188065436723 - 8.5000e-14 64.704576976476 0.000000000000 1475.370909629343 -19568.455621743615 -18093.084712114272 - 9.0000e-14 61.989675229269 0.000000000000 1413.466678931914 -19444.510671202428 -18031.043992270515 - 9.5000e-14 59.457101039628 0.000000000000 1355.719816801386 -19328.891029127131 -17973.171212325746 - 1.0000e-13 57.151073500535 0.000000000000 1303.138591377119 -19223.619147223981 -17920.480555846862 + 8.5000e-14 64.704576976476 0.000000000000 1475.370909629343 -19568.455621743618 -18093.084712114276 + 9.0000e-14 61.989675229269 0.000000000000 1413.466678931913 -19444.510671202424 -18031.043992270512 + 9.5000e-14 59.457101039628 0.000000000000 1355.719816801386 -19328.891029127128 -17973.171212325742 + 1.0000e-13 57.151073500535 0.000000000000 1303.138591377119 -19223.619147223984 -17920.480555846865 1.0500e-13 55.109870455531 0.000000000000 1256.595800527268 -19130.445501260390 -17873.849700733124 - 1.1000e-13 53.364208054286 0.000000000000 1216.791823047155 -19050.774326345723 -17833.982503298568 + 1.1000e-13 53.364208054286 0.000000000000 1216.791823047154 -19050.774326345734 -17833.982503298579 1.1500e-13 51.936086547624 0.000000000000 1184.228300885332 -18985.610801552139 -17801.382500666808 1.2000e-13 50.838162498530 0.000000000000 1159.193824520485 -18935.532402510431 -17776.338577989947 - 1.2500e-13 50.073654330447 0.000000000000 1141.761779307151 -18900.684708343262 -17758.922929036111 - 1.3000e-13 49.636744184237 0.000000000000 1131.799508476207 -18880.799949101500 -17749.000440625292 - 1.3500e-13 49.513403842570 0.000000000000 1128.987145571103 -18875.234971146012 -17746.247825574908 - 1.4000e-13 49.682546840563 0.000000000000 1132.843884467593 -18883.024119881375 -17750.180235413784 - 1.4500e-13 50.117395092442 0.000000000000 1142.759140712276 -18902.941905318730 -17760.182764606456 - 1.5000e-13 50.786947776435 0.000000000000 1158.026044517046 -18933.570293319775 -17775.544248802729 - 1.5500e-13 51.657451571600 0.000000000000 1177.874964579916 -18973.365995238219 -17795.491030658304 - 1.6000e-13 52.693790969831 0.000000000000 1201.505209488392 -19020.724039040269 -17819.218829551879 - 1.6500e-13 53.860740664264 0.000000000000 1228.113584237426 -19074.034979710228 -17845.921395472804 + 1.2500e-13 50.073654330447 0.000000000000 1141.761779307151 -18900.684708343259 -17758.922929036107 + 1.3000e-13 49.636744184237 0.000000000000 1131.799508476207 -18880.799949101503 -17749.000440625296 + 1.3500e-13 49.513403842570 0.000000000000 1128.987145571103 -18875.234971146016 -17746.247825574912 + 1.4000e-13 49.682546840563 0.000000000000 1132.843884467593 -18883.024119881378 -17750.180235413787 + 1.4500e-13 50.117395092442 0.000000000000 1142.759140712276 -18902.941905318727 -17760.182764606452 + 1.5000e-13 50.786947776435 0.000000000000 1158.026044517046 -18933.570293319772 -17775.544248802726 + 1.5500e-13 51.657451571600 0.000000000000 1177.874964579916 -18973.365995238215 -17795.491030658301 + 1.6000e-13 52.693790969831 0.000000000000 1201.505209488392 -19020.724039040273 -17819.218829551883 + 1.6500e-13 53.860740664264 0.000000000000 1228.113584237425 -19074.034979710232 -17845.921395472807 1.7000e-13 55.124044818248 0.000000000000 1256.918999339337 -19131.734155056572 -17874.815155717235 - 1.7500e-13 56.451307566455 0.000000000000 1287.182775715643 -19192.342288330583 -17905.159512614940 - 1.8000e-13 57.812694084840 0.000000000000 1318.224630246533 -19254.497422337830 -17936.272792091298 - 1.8500e-13 59.181451839188 0.000000000000 1349.434561096222 -19316.978636348747 -17967.544075252525 - 1.9000e-13 60.534267721256 0.000000000000 1380.280991005090 -19378.722272416126 -17998.441281411036 - 1.9500e-13 61.851479519092 0.000000000000 1410.315589161190 -19438.831519965486 -18028.515930804297 - 2.0000e-13 63.117160367879 0.000000000000 1439.175196818513 -19496.580214363818 -18057.405017545305 + 1.7500e-13 56.451307566455 0.000000000000 1287.182775715643 -19192.342288330579 -17905.159512614937 + 1.8000e-13 57.812694084840 0.000000000000 1318.224630246533 -19254.497422337841 -17936.272792091309 + 1.8500e-13 59.181451839188 0.000000000000 1349.434561096222 -19316.978636348751 -17967.544075252528 + 1.9000e-13 60.534267721256 0.000000000000 1380.280991005092 -19378.722272416122 -17998.441281411029 + 1.9500e-13 61.851479519092 0.000000000000 1410.315589161190 -19438.831519965493 -18028.515930804304 + 2.0000e-13 63.117160367879 0.000000000000 1439.175196818513 -19496.580214363821 -18057.405017545309 2.0500e-13 64.319093228780 0.000000000000 1466.581245372786 -19551.411630147253 -18084.830384774468 2.1000e-13 65.448649730056 0.000000000000 1492.336993739269 -19602.932923796499 -18110.595930057229 - 2.1500e-13 66.500584588746 0.000000000000 1516.322840828575 -19650.905736343353 -18134.582895514777 - 2.2000e-13 67.472754109371 0.000000000000 1538.489906853600 -19695.233339333208 -18156.743432479609 - 2.2500e-13 68.365765787239 0.000000000000 1558.852043707764 -19735.944638051518 -18177.092594343754 - 2.3000e-13 69.182566628108 0.000000000000 1577.476447975430 -19773.175370816847 -18195.698922841417 - 2.3500e-13 69.927980965569 0.000000000000 1594.473122407151 -19807.146987448348 -18212.673865041197 - 2.4000e-13 70.608214296791 0.000000000000 1609.983562557461 -19838.143954290230 -18228.160391732767 - 2.4500e-13 71.230347089962 0.000000000000 1624.169214761088 -19866.490578068206 -18242.321363307117 - 2.5000e-13 71.801849695525 0.000000000000 1637.200415310187 -19892.528777415318 -18255.328362105131 - 2.5500e-13 72.330153566790 0.000000000000 1649.246613578247 -19916.598426527238 -18267.351812948993 + 2.1500e-13 66.500584588746 0.000000000000 1516.322840828576 -19650.905736343357 -18134.582895514781 + 2.2000e-13 67.472754109371 0.000000000000 1538.489906853600 -19695.233339333216 -18156.743432479616 + 2.2500e-13 68.365765787239 0.000000000000 1558.852043707764 -19735.944638051511 -18177.092594343747 + 2.3000e-13 69.182566628108 0.000000000000 1577.476447975431 -19773.175370816854 -18195.698922841424 + 2.3500e-13 69.927980965569 0.000000000000 1594.473122407151 -19807.146987448352 -18212.673865041201 + 2.4000e-13 70.608214296791 0.000000000000 1609.983562557461 -19838.143954290223 -18228.160391732763 + 2.4500e-13 71.230347089962 0.000000000000 1624.169214761089 -19866.490578068209 -18242.321363307121 + 2.5000e-13 71.801849695525 0.000000000000 1637.200415310187 -19892.528777415311 -18255.328362105123 + 2.5500e-13 72.330153566790 0.000000000000 1649.246613578247 -19916.598426527242 -18267.351812948993 2.6000e-13 72.822312032462 0.000000000000 1660.468637075040 -19939.021811565046 -18278.553174490007 - 2.6500e-13 73.284774263109 0.000000000000 1671.013537509926 -19960.093299817938 -18289.079762308011 - 2.7000e-13 73.723279888511 0.000000000000 1681.012187893841 -19980.074570631343 -18299.062382737502 + 2.6500e-13 73.284774263109 0.000000000000 1671.013537509926 -19960.093299817931 -18289.079762308003 + 2.7000e-13 73.723279888511 0.000000000000 1681.012187893841 -19980.074570631339 -18299.062382737498 2.7500e-13 74.142862889948 0.000000000000 1690.579371289844 -19999.194880377057 -18308.615509087213 - 2.8000e-13 74.547937343440 0.000000000000 1699.815735900243 -20017.655086923547 -18317.839351023304 - 2.8500e-13 74.942428850070 0.000000000000 1708.810791894347 -20035.633755350580 -18326.822963456234 - 2.9000e-13 75.329915690697 0.000000000000 1717.646129968400 -20053.293681693533 -18335.647551725131 - 2.9500e-13 75.713751254186 0.000000000000 1726.398212910802 -20070.787526273314 -18344.389313362513 - 3.0000e-13 76.097150480774 0.000000000000 1735.140346653344 -20088.261770810910 -18353.121424157565 - 3.0500e-13 76.483234204483 0.000000000000 1743.943691351043 -20105.858729244606 -18361.915037893563 + 2.8000e-13 74.547937343440 0.000000000000 1699.815735900243 -20017.655086923543 -18317.839351023300 + 2.8500e-13 74.942428850070 0.000000000000 1708.810791894347 -20035.633755350584 -18326.822963456238 + 2.9000e-13 75.329915690697 0.000000000000 1717.646129968400 -20053.293681693540 -18335.647551725138 + 2.9500e-13 75.713751254186 0.000000000000 1726.398212910802 -20070.787526273318 -18344.389313362517 + 3.0000e-13 76.097150480774 0.000000000000 1735.140346653344 -20088.261770810906 -18353.121424157562 + 3.0500e-13 76.483234204483 0.000000000000 1743.943691351042 -20105.858729244610 -18361.915037893566 3.1000e-13 76.875033927270 0.000000000000 1752.877370240729 -20123.716738515381 -18370.839368274654 - 3.1500e-13 77.275464922698 0.000000000000 1762.007856360478 -20141.968898536077 -18379.961042175601 - 3.2000e-13 77.687278065965 0.000000000000 1771.397874194921 -20160.740841279039 -18389.342967084118 - 3.2500e-13 78.113001325101 0.000000000000 1781.105065578145 -20180.148030773624 -18399.042965195480 - 3.3000e-13 78.554881249561 0.000000000000 1791.180655537325 -20200.293067024315 -18409.112411486989 - 3.3500e-13 79.014833544294 0.000000000000 1801.668325300073 -20221.263409567557 -18419.595084267483 - 3.4000e-13 79.494410070760 0.000000000000 1812.603459863199 -20243.129857024793 -18430.526397161593 - 3.4500e-13 79.994787322038 0.000000000000 1824.012885206400 -20265.946014794816 -18441.933129588415 + 3.1500e-13 77.275464922698 0.000000000000 1762.007856360478 -20141.968898536081 -18379.961042175604 + 3.2000e-13 77.687278065965 0.000000000000 1771.397874194921 -20160.740841279032 -18389.342967084111 + 3.2500e-13 78.113001325101 0.000000000000 1781.105065578144 -20180.148030773624 -18399.042965195480 + 3.3000e-13 78.554881249561 0.000000000000 1791.180655537324 -20200.293067024311 -18409.112411486989 + 3.3500e-13 79.014833544294 0.000000000000 1801.668325300074 -20221.263409567557 -18419.595084267483 + 3.4000e-13 79.494410070760 0.000000000000 1812.603459863199 -20243.129857024796 -18430.526397161597 + 3.4500e-13 79.994787322038 0.000000000000 1824.012885206400 -20265.946014794827 -18441.933129588426 3.5000e-13 80.516778488607 0.000000000000 1835.915143411711 -20289.748849423788 -18453.833706012076 - 3.5500e-13 81.060867665302 0.000000000000 1848.321272638574 -20314.560265183038 -18466.238992544462 + 3.5500e-13 81.060867665302 0.000000000000 1848.321272638574 -20314.560265183034 -18466.238992544459 3.6000e-13 81.627260723254 0.000000000000 1861.235967087807 -20340.389453556760 -18479.153486468953 - 3.6500e-13 82.215943291394 0.000000000000 1874.658899075390 -20367.235578191630 -18492.576679116239 - 3.7000e-13 82.826732860944 0.000000000000 1888.585907100595 -20395.090198266331 -18506.504291165737 - 3.7500e-13 83.459310274397 0.000000000000 1903.009713846690 -20423.938749123387 -18520.929035276698 - 3.8000e-13 84.113217059921 0.000000000000 1917.919865400918 -20453.760449780180 -18535.840584379261 - 3.8500e-13 84.787810345616 0.000000000000 1933.301703225285 -20484.526246127400 -18551.224542902113 - 3.9000e-13 85.482176638171 0.000000000000 1949.134398167950 -20516.194838769807 -18567.060440601857 + 3.6500e-13 82.215943291394 0.000000000000 1874.658899075389 -20367.235578191638 -18492.576679116250 + 3.7000e-13 82.826732860944 0.000000000000 1888.585907100594 -20395.090198266331 -18506.504291165737 + 3.7500e-13 83.459310274397 0.000000000000 1903.009713846690 -20423.938749123390 -18520.929035276702 + 3.8000e-13 84.113217059921 0.000000000000 1917.919865400918 -20453.760449780177 -18535.840584379257 + 3.8500e-13 84.787810345616 0.000000000000 1933.301703225284 -20484.526246127407 -18551.224542902124 + 3.9000e-13 85.482176638171 0.000000000000 1949.134398167950 -20516.194838769828 -18567.060440601879 3.9500e-13 86.195017970325 0.000000000000 1965.388354437887 -20548.707413612181 -18583.319059174293 - 4.0000e-13 86.924535090611 0.000000000000 1982.022546138701 -20581.982218803405 -18599.959672664703 - 4.0500e-13 87.668337698224 0.000000000000 1998.982470475703 -20615.910386809352 -18616.927916333647 + 4.0000e-13 86.924535090611 0.000000000000 1982.022546138699 -20581.982218803405 -18599.959672664707 + 4.0500e-13 87.668337698224 0.000000000000 1998.982470475702 -20615.910386809366 -18616.927916333665 4.1000e-13 88.423407755835 0.000000000000 2016.199311227741 -20650.354218867549 -18634.154907639808 - 4.1500e-13 89.186128963618 0.000000000000 2033.590610803501 -20685.148542904655 -18651.557932101154 + 4.1500e-13 89.186128963618 0.000000000000 2033.590610803501 -20685.148542904670 -18651.557932101168 4.2000e-13 89.952378213929 0.000000000000 2051.062355558810 -20720.104945676489 -18669.042590117679 - 4.2500e-13 90.717660093533 0.000000000000 2068.512042668962 -20755.017989206564 -18686.505946537603 + 4.2500e-13 90.717660093533 0.000000000000 2068.512042668961 -20755.017989206561 -18686.505946537600 4.3000e-13 91.477258609354 0.000000000000 2085.832139725595 -20789.672203564089 -18703.840063838492 - 4.3500e-13 92.226382605571 0.000000000000 2102.913400485948 -20823.848761924040 -18720.935361438093 - 4.4000e-13 92.960290192757 0.000000000000 2119.647702062238 -20857.331162653845 -18737.683460591608 - 4.4500e-13 93.674388496471 0.000000000000 2135.930319353715 -20889.909756677669 -18753.979437323953 - 4.5000e-13 94.364314267812 0.000000000000 2151.661763100128 -20921.385385938695 -18769.723622838566 + 4.3500e-13 92.226382605571 0.000000000000 2102.913400485949 -20823.848761924033 -18720.935361438085 + 4.4000e-13 92.960290192757 0.000000000000 2119.647702062239 -20857.331162653853 -18737.683460591616 + 4.4500e-13 93.674388496471 0.000000000000 2135.930319353715 -20889.909756677665 -18753.979437323949 + 4.5000e-13 94.364314267812 0.000000000000 2151.661763100129 -20921.385385938695 -18769.723622838566 4.5500e-13 95.026006222349 0.000000000000 2166.749429328343 -20951.572642707342 -18784.823213379001 - 4.6000e-13 95.655780870001 0.000000000000 2181.109328398624 -20980.303298390198 -18799.193969991575 - 4.6500e-13 96.250420553238 80467840.792713567615 2194.668092420491 -21007.430308609462 -18812.762216188970 - 4.7000e-13 96.808269454089 0.000000000000 2207.387966017444 -21032.877845856307 -18825.489879838860 - 4.7500e-13 97.326210460521 0.000000000000 2219.197873901885 -21056.503368019159 -18837.305494117274 - 4.8000e-13 97.803057915930 0.000000000000 2230.070781150726 -21078.252506416535 -18848.181725265807 - 4.8500e-13 98.238505166071 0.000000000000 2239.999695542205 -21098.111105833741 -18858.111410291534 - 4.9000e-13 98.633168249846 0.000000000000 2248.998663777767 -21116.107281217497 -18867.108617439728 - 4.9500e-13 98.988566034346 94972998.727793619037 2257.102318528317 -21132.310551890587 -18875.208233362267 - 5.0000e-13 99.307661869278 0.000000000000 2264.378229047195 -21146.856551451376 -18882.478322404182 - 5.0500e-13 99.592771137611 0.000000000000 2270.879189879013 -21159.851528698535 -18888.972338819520 - 5.1000e-13 99.847269437732 0.000000000000 2276.682170225925 -21171.450189452768 -18894.768019226842 + 4.6000e-13 95.655780870001 0.000000000000 2181.109328398623 -20980.303298390201 -18799.193969991578 + 4.6500e-13 96.250420553238 80467840.792713612318 2194.668092420491 -21007.430308609455 -18812.762216188963 + 4.7000e-13 96.808269454089 0.000000000000 2207.387966017444 -21032.877845856310 -18825.489879838868 + 4.7500e-13 97.326210460521 0.000000000000 2219.197873901886 -21056.503368019155 -18837.305494117270 + 4.8000e-13 97.803057915930 0.000000000000 2230.070781150728 -21078.252506416535 -18848.181725265807 + 4.8500e-13 98.238505166071 0.000000000000 2239.999695542205 -21098.111105833737 -18858.111410291531 + 4.9000e-13 98.633168249846 0.000000000000 2248.998663777768 -21116.107281217501 -18867.108617439731 + 4.9500e-13 98.988566034346 94972998.727793619037 2257.102318528317 -21132.310551890580 -18875.208233362264 + 5.0000e-13 99.307661869278 0.000000000000 2264.378229047195 -21146.856551451390 -18882.478322404197 + 5.0500e-13 99.592771137611 0.000000000000 2270.879189879013 -21159.851528698542 -18888.972338819527 + 5.1000e-13 99.847269437732 0.000000000000 2276.682170225926 -21171.450189452764 -18894.768019226838 5.1500e-13 100.074685220125 0.000000000000 2281.867624569520 -21181.814192374412 -18899.946567804891 - 5.2000e-13 100.278447435248 0.000000000000 2286.513738626993 -21191.100534083187 -18904.586795456195 - 5.2500e-13 100.461672705272 0.000000000000 2290.691576516282 -21199.451772940978 -18908.760196424697 - 5.3000e-13 100.627014590560 0.000000000000 2294.461643783485 -21206.989138045006 -18912.527494261521 - 5.3500e-13 100.776581191341 0.000000000000 2297.872008585410 -21213.808804938173 -18915.936796352762 - 5.4000e-13 100.911911869151 0.000000000000 2300.957770900096 -21219.980895836838 -18919.023124936743 - 5.4500e-13 101.033994892184 0.000000000000 2303.741464869823 -21225.550344580923 -18921.808879711101 - 5.5000e-13 101.143307782426 0.000000000000 2306.233978782232 -21230.538770913121 -18924.304792130890 - 5.5500e-13 101.239869479028 0.000000000000 2308.435744481166 -21234.946858762414 -18926.511114281249 - 5.6000e-13 101.323303596075 0.000000000000 2310.338179747921 -21238.757213857058 -18928.419034109138 - 5.6500e-13 101.392919892567 0.000000000000 2311.925545951070 -21241.938045192641 -18930.012499241569 - 5.7000e-13 101.447823030728 53725445.422426432371 2313.177427914839 -21244.448106468873 -18931.270678554036 + 5.2000e-13 100.278447435248 0.000000000000 2286.513738626993 -21191.100534083183 -18904.586795456191 + 5.2500e-13 100.461672705272 0.000000000000 2290.691576516284 -21199.451772940974 -18908.760196424690 + 5.3000e-13 100.627014590560 0.000000000000 2294.461643783487 -21206.989138044999 -18912.527494261511 + 5.3500e-13 100.776581191341 0.000000000000 2297.872008585412 -21213.808804938177 -18915.936796352766 + 5.4000e-13 100.911911869151 0.000000000000 2300.957770900096 -21219.980895836834 -18919.023124936739 + 5.4500e-13 101.033994892184 0.000000000000 2303.741464869823 -21225.550344580926 -18921.808879711105 + 5.5000e-13 101.143307782426 0.000000000000 2306.233978782234 -21230.538770913121 -18924.304792130886 + 5.5500e-13 101.239869479028 0.000000000000 2308.435744481166 -21234.946858762418 -18926.511114281253 + 5.6000e-13 101.323303596075 0.000000000000 2310.338179747922 -21238.757213857054 -18928.419034109131 + 5.6500e-13 101.392919892567 0.000000000000 2311.925545951070 -21241.938045192641 -18930.012499241573 + 5.7000e-13 101.447823030728 53725445.422426410019 2313.177427914840 -21244.448106468873 -18931.270678554032 5.7500e-13 101.488142754411 0.000000000000 2314.096784012751 -21246.292813008859 -18932.196028996106 - 5.8000e-13 101.511919697247 0.000000000000 2314.638937464925 -21247.382263847125 -18932.743326382199 - 5.8500e-13 101.518575578879 0.000000000000 2314.790702526955 -21247.689574542950 -18932.898872015994 - 5.9000e-13 101.507976654675 0.000000000000 2314.549029600947 -21247.208247444145 -18932.659217843197 - 5.9500e-13 101.480560581955 77381903.001053184271 2313.923897994531 -21245.958024661049 -18932.034126666520 - 6.0000e-13 101.439334088290 0.000000000000 2312.983866047773 -21244.076221061096 -18931.092355013323 - 6.0500e-13 101.383732604552 0.000000000000 2311.716060654831 -21241.537132832713 -18929.821072177881 - 6.1000e-13 101.315971969448 0.000000000000 2310.171006587237 -21238.442190649999 -18928.271184062763 - 6.1500e-13 101.238698040385 0.000000000000 2308.409033750997 -21234.912530993683 -18926.503497242684 - 6.2000e-13 101.154827517789 0.000000000000 2306.496647719039 -21231.081659365700 -18924.585011646661 - 6.2500e-13 101.067381091823 68892508.729905828834 2304.502725201497 -21227.087775933629 -18922.585050732130 - 6.3000e-13 100.982359372982 169562217.574805825949 2302.564089999381 -21223.204904289967 -18920.640814290586 - 6.3500e-13 100.901715040789 91051991.646203294396 2300.725266421464 -21219.522501627449 -18918.797235205984 - 6.4000e-13 100.830134370164 137291796.435539186001 2299.093109253175 -21216.254315185197 -18917.161205932021 - 6.4500e-13 100.769333836480 76790530.791780710220 2297.706756959737 -21213.478762451316 -18915.772005491577 - 6.5000e-13 100.718706329717 0.000000000000 2296.552366432897 -21211.168192827805 -18914.615826394907 - 6.5500e-13 100.677880214588 174120187.506460040808 2295.621463776105 -21209.305675427091 -18913.684211650987 - 6.6000e-13 100.653356339579 55952001.336968332529 2295.062279040330 -21208.187730950522 -18913.125451910193 - 6.6500e-13 100.640958226726 0.000000000000 2294.779581650248 -21207.623870046969 -18912.844288396722 - 6.7000e-13 100.639446819821 0.000000000000 2294.745119083862 -21207.557431716312 -18912.812312632450 - 6.7500e-13 100.648448314501 184333714.889515429735 2294.950367986077 -21207.971234640954 -18913.020866654879 - 6.8000e-13 100.672529346630 54293960.884311273694 2295.499455174934 -21209.073530805086 -18913.574075630153 - 6.8500e-13 100.707723185659 0.000000000000 2296.301932661493 -21210.683117522771 -18914.381184861279 - 6.9000e-13 100.750217435514 138303134.855293035507 2297.270871537113 -21212.625957837827 -18915.355086300715 - 6.9500e-13 100.801028078367 0.000000000000 2298.429437868401 -21214.948521267324 -18916.519083398922 - 7.0000e-13 100.855620721515 0.000000000000 2299.674240034537 -21217.443694229245 -18917.769454194706 - 7.0500e-13 100.912322255911 0.000000000000 2300.967128394046 -21220.035131608522 -18919.068003214474 - 7.1000e-13 100.969409215777 93534525.905966281891 2302.268805088978 -21222.644218472902 -18920.375413383925 - 7.1500e-13 101.027596522277 44072793.526799127460 2303.595571499186 -21225.303672369242 -18921.708100870055 - 7.2000e-13 101.083913384717 136421853.714707940817 2304.879688704620 -21227.877902503318 -18922.998213798699 - 7.2500e-13 101.138079781396 0.000000000000 2306.114771749346 -21230.354134606736 -18924.239362857388 - 7.3000e-13 101.185173168893 0.000000000000 2307.188578536977 -21232.507853406762 -18925.319274869784 - 7.3500e-13 101.223380989136 146989078.742989242077 2308.059779758618 -21234.256387747693 -18926.196607989077 - 7.4000e-13 101.253330191092 0.000000000000 2308.742670883125 -21235.628428886590 -18926.885758003464 - 7.4500e-13 101.270582567130 0.000000000000 2309.136053467773 -21236.421442171075 -18927.285388703302 - 7.5000e-13 101.273396455537 52543282.456574201584 2309.200214757315 -21236.555933864631 -18927.355719107316 - 7.5500e-13 101.260786312900 50478875.563574202359 2308.912682738990 -21235.986832501610 -18927.074149762622 - 7.6000e-13 101.233044644123 114192522.871039077640 2308.280127006295 -21234.727285010234 -18926.447158003939 - 7.6500e-13 101.189872317893 184462270.039994597435 2307.295726872683 -21232.763457390127 -18925.467730517445 - 7.7000e-13 101.132587047742 57767040.799043186009 2305.989528376670 -21230.155248725994 -18924.165720349323 - 7.7500e-13 101.055898509856 172816247.226023137569 2304.240903423288 -21226.661093183931 -18922.420189760644 - 7.8000e-13 100.959467989391 199581971.051283329725 2302.042128756305 -21222.265466617788 -18920.223337861484 - 7.8500e-13 100.844822900482 0.000000000000 2299.428031933282 -21217.037854075654 -18917.609822142371 - 7.9000e-13 100.708132571311 0.000000000000 2296.311267328539 -21210.803457083963 -18914.492189755423 - 7.9500e-13 100.550485537268 82852587.335772901773 2292.716655341486 -21203.611955150660 -18910.895299809174 - 8.0000e-13 100.376412827676 64663370.565698929131 2288.747510902347 -21195.670061385928 -18906.922550483581 - 8.0500e-13 100.186766131912 62818096.025483205914 2284.423253931496 -21187.016783314237 -18902.593529382742 - 8.1000e-13 99.984661803613 40673745.137080848217 2279.814942423770 -21177.794440305268 -18897.979497881497 - 8.1500e-13 99.771608746194 145899561.290220409632 2274.956981861917 -21168.072042023745 -18893.115060161828 - 8.2000e-13 99.536365488773 52575189.963680595160 2269.593048197501 -21157.335923320476 -18887.742875122975 - 8.2500e-13 99.296347675291 26785077.410323355347 2264.120246792245 -21146.381777252631 -18882.261530460386 - 8.3000e-13 99.053958371976 44394650.135883271694 2258.593371513433 -21135.319572248656 -18876.726200735222 - 8.3500e-13 98.814387873513 48920596.857503511012 2253.130769627241 -21124.386318174587 -18871.255548547346 - 8.4000e-13 98.580425959226 99841331.509202435613 2247.796052696378 -21113.709426046975 -18865.913373350595 - 8.4500e-13 98.359247104798 47265490.834025427699 2242.752810581264 -21103.616095547717 -18860.863284966454 - 8.5000e-13 98.150778120109 0.000000000000 2237.999374426636 -21094.102841060936 -18856.103466634300 - 8.5500e-13 97.956110742762 0.000000000000 2233.560637647699 -21085.219160019245 -18851.658522371545 - 8.6000e-13 97.778084686544 0.000000000000 2229.501350395175 -21077.094264684623 -18847.592914289449 - 8.6500e-13 97.619512630961 0.000000000000 2225.885646393700 -21069.856257654694 -18843.970611260993 - 8.7000e-13 97.483219554591 0.000000000000 2222.777939807006 -21063.634066039940 -18840.856126232935 - 8.7500e-13 97.371998065401 26645073.594592507929 2220.241906695510 -21058.555489846436 -18838.313583150928 - 8.8000e-13 97.289063475627 0.000000000000 2218.350861473177 -21054.767939119265 -18836.417077646089 - 8.8500e-13 97.235933357948 0.000000000000 2217.139407296185 -21052.341552060254 -18835.202144764069 - 8.9000e-13 97.214039677538 50761698.241923153400 2216.640195328642 -21051.342483409033 -18834.702288080392 - 8.9500e-13 97.223115878023 0.000000000000 2216.847147646246 -21051.759012974402 -18834.911865328155 - 9.0000e-13 97.263060663199 0.000000000000 2217.757954528771 -21053.586579172133 -18835.828624643364 - 9.0500e-13 97.332007238955 31399035.525223337114 2219.330049996223 -21056.739562300845 -18837.409512304621 - 9.1000e-13 97.427574349810 134108345.848325207829 2221.509137502274 -21061.108561615383 -18839.599424113108 - 9.1500e-13 97.543947992142 46993105.597974054515 2224.162648189872 -21066.427494868156 -18842.264846678285 - 9.2000e-13 97.680103711247 0.000000000000 2227.267222804753 -21072.649039091608 -18845.381816286856 - 9.2500e-13 97.830104234863 0.000000000000 2230.687481761892 -21079.501925474484 -18848.814443712592 - 9.3000e-13 97.989644951229 42377817.226953610778 2234.325272824403 -21086.789585493058 -18852.464312668653 - 9.3500e-13 98.156013360592 46175612.273578517139 2238.118746530956 -21094.388188631267 -18856.269442100311 - 9.4000e-13 98.324581727232 56844353.038441978395 2241.962382886327 -21102.086544355090 -18860.124161468764 - 9.4500e-13 98.492884883650 131755971.208584472537 2245.799972011856 -21109.772051806496 -18863.972079794639 - 9.5000e-13 98.651587182847 61568287.064323358238 2249.418645782224 -21117.018743873177 -18867.600098090952 - 9.5500e-13 98.801142011416 41643130.795075871050 2252.828742158335 -21123.846914048914 -18871.018171890581 - 9.6000e-13 98.938967520086 73259641.783949404955 2255.971390725063 -21130.138592788979 -18874.167202063916 - 9.6500e-13 99.054039784001 0.000000000000 2258.595227841666 -21135.390897197216 -18876.795669355550 - 9.7000e-13 99.152235518797 59873855.602764435112 2260.834252302346 -21139.871903597585 -18879.037651295239 - 9.7500e-13 99.228184578056 65545500.698350295424 2262.566015925287 -21143.336738616144 -18880.770722690857 - 9.8000e-13 99.287298173864 133043291.212443158031 2263.913903257109 -21146.032356642456 -18882.118453385345 - 9.8500e-13 99.332676848904 67949306.321875020862 2264.948611776986 -21148.100272307896 -18883.151660530912 - 9.9000e-13 99.358256017024 0.000000000000 2265.531858933524 -21149.264149767267 -18883.732290833741 - 9.9500e-13 99.365437590893 118461652.350641056895 2265.695610644238 -21149.587715830981 -18883.892105186744 - 1.0000e-12 99.359604739027 0.000000000000 2265.562612016245 -21149.316492673424 -18883.753880657179 + 5.8000e-13 101.511919697247 0.000000000000 2314.638937464927 -21247.382263847121 -18932.743326382195 + 5.8500e-13 101.518575578879 0.000000000000 2314.790702526955 -21247.689574542947 -18932.898872015990 + 5.9000e-13 101.507976654675 0.000000000000 2314.549029600948 -21247.208247444152 -18932.659217843204 + 5.9500e-13 101.480560581955 77381903.001053109765 2313.923897994531 -21245.958024661057 -18932.034126666527 + 6.0000e-13 101.439334088290 0.000000000000 2312.983866047772 -21244.076221061114 -18931.092355013341 + 6.0500e-13 101.383732604552 0.000000000000 2311.716060654830 -21241.537132832698 -18929.821072177867 + 6.1000e-13 101.315971969448 0.000000000000 2310.171006587235 -21238.442190650007 -18928.271184062771 + 6.1500e-13 101.238698040385 0.000000000000 2308.409033750998 -21234.912530993675 -18926.503497242677 + 6.2000e-13 101.154827517789 0.000000000000 2306.496647719039 -21231.081659365693 -18924.585011646654 + 6.2500e-13 101.067381091823 68892508.729905888438 2304.502725201500 -21227.087775933633 -18922.585050732134 + 6.3000e-13 100.982359372982 169562217.574805915356 2302.564089999380 -21223.204904289974 -18920.640814290593 + 6.3500e-13 100.901715040789 91051991.646203294396 2300.725266421466 -21219.522501627467 -18918.797235206002 + 6.4000e-13 100.830134370164 137291796.435539186001 2299.093109253177 -21216.254315185190 -18917.161205932014 + 6.4500e-13 100.769333836480 76790530.791780740023 2297.706756959738 -21213.478762451316 -18915.772005491577 + 6.5000e-13 100.718706329717 0.000000000000 2296.552366432895 -21211.168192827798 -18914.615826394904 + 6.5500e-13 100.677880214588 174120187.506460100412 2295.621463776105 -21209.305675427080 -18913.684211650976 + 6.6000e-13 100.653356339579 55952001.336968310177 2295.062279040331 -21208.187730950503 -18913.125451910171 + 6.6500e-13 100.640958226726 0.000000000000 2294.779581650246 -21207.623870046969 -18912.844288396722 + 6.7000e-13 100.639446819821 0.000000000000 2294.745119083861 -21207.557431716308 -18912.812312632446 + 6.7500e-13 100.648448314501 184333714.889515161514 2294.950367986076 -21207.971234640954 -18913.020866654879 + 6.8000e-13 100.672529346630 54293960.884311541915 2295.499455174934 -21209.073530805072 -18913.574075630138 + 6.8500e-13 100.707723185659 0.000000000000 2296.301932661492 -21210.683117522782 -18914.381184861290 + 6.9000e-13 100.750217435514 138303134.855293035507 2297.270871537115 -21212.625957837834 -18915.355086300719 + 6.9500e-13 100.801028078367 0.000000000000 2298.429437868405 -21214.948521267317 -18916.519083398911 + 7.0000e-13 100.855620721515 0.000000000000 2299.674240034537 -21217.443694229241 -18917.769454194706 + 7.0500e-13 100.912322255911 0.000000000000 2300.967128394045 -21220.035131608522 -18919.068003214477 + 7.1000e-13 100.969409215777 93534525.905966445804 2302.268805088978 -21222.644218472913 -18920.375413383936 + 7.1500e-13 101.027596522277 44072793.526799157262 2303.595571499188 -21225.303672369249 -18921.708100870062 + 7.2000e-13 101.083913384717 136421853.714707911015 2304.879688704619 -21227.877902503333 -18922.998213798714 + 7.2500e-13 101.138079781396 0.000000000000 2306.114771749349 -21230.354134606740 -18924.239362857392 + 7.3000e-13 101.185173168893 0.000000000000 2307.188578536978 -21232.507853406780 -18925.319274869802 + 7.3500e-13 101.223380989136 146989078.742990165949 2308.059779758620 -21234.256387747701 -18926.196607989081 + 7.4000e-13 101.253330191092 0.000000000000 2308.742670883125 -21235.628428886586 -18926.885758003460 + 7.4500e-13 101.270582567130 0.000000000000 2309.136053467772 -21236.421442171089 -18927.285388703316 + 7.5000e-13 101.273396455537 52543282.456574238837 2309.200214757313 -21236.555933864642 -18927.355719107327 + 7.5500e-13 101.260786312900 50478875.563574224710 2308.912682738989 -21235.986832501607 -18927.074149762619 + 7.6000e-13 101.233044644123 114192522.871038958430 2308.280127006295 -21234.727285010249 -18926.447158003954 + 7.6500e-13 101.189872317893 184462270.039994239807 2307.295726872682 -21232.763457390120 -18925.467730517437 + 7.7000e-13 101.132587047742 57767040.799043327570 2305.989528376672 -21230.155248726005 -18924.165720349334 + 7.7500e-13 101.055898509856 172816247.226023346186 2304.240903423289 -21226.661093183924 -18922.420189760636 + 7.8000e-13 100.959467989391 199581971.051283359528 2302.042128756307 -21222.265466617799 -18920.223337861491 + 7.8500e-13 100.844822900482 0.000000000000 2299.428031933284 -21217.037854075639 -18917.609822142356 + 7.9000e-13 100.708132571311 0.000000000000 2296.311267328539 -21210.803457083985 -18914.492189755445 + 7.9500e-13 100.550485537268 82852587.335772410035 2292.716655341487 -21203.611955150660 -18910.895299809174 + 8.0000e-13 100.376412827676 64663370.565698914230 2288.747510902349 -21195.670061385939 -18906.922550483589 + 8.0500e-13 100.186766131912 62818096.025483205914 2284.423253931498 -21187.016783314251 -18902.593529382753 + 8.1000e-13 99.984661803613 40673745.137080766261 2279.814942423770 -21177.794440305268 -18897.979497881497 + 8.1500e-13 99.771608746194 145899561.290219128132 2274.956981861916 -21168.072042023734 -18893.115060161817 + 8.2000e-13 99.536365488773 52575189.963680595160 2269.593048197502 -21157.335923320457 -18887.742875122956 + 8.2500e-13 99.296347675291 26785077.410323355347 2264.120246792247 -21146.381777252624 -18882.261530460375 + 8.3000e-13 99.053958371976 44394650.135883234441 2258.593371513431 -21135.319572248671 -18876.726200735240 + 8.3500e-13 98.814387873513 48920596.857503794134 2253.130769627244 -21124.386318174595 -18871.255548547349 + 8.4000e-13 98.580425959226 99841331.509202137589 2247.796052696377 -21113.709426046964 -18865.913373350588 + 8.4500e-13 98.359247104798 47265490.834025457501 2242.752810581264 -21103.616095547739 -18860.863284966475 + 8.5000e-13 98.150778120109 0.000000000000 2237.999374426633 -21094.102841060951 -18856.103466634318 + 8.5500e-13 97.956110742763 0.000000000000 2233.560637647702 -21085.219160019216 -18851.658522371516 + 8.6000e-13 97.778084686544 0.000000000000 2229.501350395175 -21077.094264684652 -18847.592914289478 + 8.6500e-13 97.619512630961 0.000000000000 2225.885646393703 -21069.856257654676 -18843.970611260971 + 8.7000e-13 97.483219554591 0.000000000000 2222.777939807006 -21063.634066039929 -18840.856126232924 + 8.7500e-13 97.371998065401 26645073.594592589885 2220.241906695506 -21058.555489846447 -18838.313583150943 + 8.8000e-13 97.289063475627 0.000000000000 2218.350861473178 -21054.767939119294 -18836.417077646118 + 8.8500e-13 97.235933357948 0.000000000000 2217.139407296186 -21052.341552060258 -18835.202144764073 + 8.9000e-13 97.214039677538 50761698.241924010217 2216.640195328641 -21051.342483409026 -18834.702288080385 + 8.9500e-13 97.223115878022 0.000000000000 2216.847147646244 -21051.759012974377 -18834.911865328133 + 9.0000e-13 97.263060663199 0.000000000000 2217.757954528770 -21053.586579172108 -18835.828624643338 + 9.0500e-13 97.332007238955 31399035.525223702192 2219.330049996223 -21056.739562300841 -18837.409512304617 + 9.1000e-13 97.427574349810 134108345.848324850202 2221.509137502272 -21061.108561615412 -18839.599424113141 + 9.1500e-13 97.543947992142 46993105.597973980010 2224.162648189872 -21066.427494868138 -18842.264846678267 + 9.2000e-13 97.680103711247 0.000000000000 2227.267222804752 -21072.649039091615 -18845.381816286863 + 9.2500e-13 97.830104234863 0.000000000000 2230.687481761891 -21079.501925474477 -18848.814443712585 + 9.3000e-13 97.989644951229 42377817.226953580976 2234.325272824404 -21086.789585493065 -18852.464312668661 + 9.3500e-13 98.156013360592 46175612.273578442633 2238.118746530958 -21094.388188631252 -18856.269442100296 + 9.4000e-13 98.324581727232 56844353.038441985846 2241.962382886327 -21102.086544355116 -18860.124161468790 + 9.4500e-13 98.492884883650 131755971.208583459258 2245.799972011855 -21109.772051806522 -18863.972079794668 + 9.5000e-13 98.651587182847 61568287.064323358238 2249.418645782224 -21117.018743873188 -18867.600098090963 + 9.5500e-13 98.801142011416 41643130.795075871050 2252.828742158335 -21123.846914048911 -18871.018171890577 + 9.6000e-13 98.938967520086 73259641.783949539065 2255.971390725065 -21130.138592788975 -18874.167202063909 + 9.6500e-13 99.054039784001 0.000000000000 2258.595227841667 -21135.390897197209 -18876.795669355542 + 9.7000e-13 99.152235518797 59873855.602763965726 2260.834252302347 -21139.871903597585 -18879.037651295239 + 9.7500e-13 99.228184578056 65545500.698350228369 2262.566015925288 -21143.336738616123 -18880.770722690835 + 9.8000e-13 99.287298173864 133043291.212442725897 2263.913903257108 -21146.032356642452 -18882.118453385345 + 9.8500e-13 99.332676848904 67949306.321874767542 2264.948611776982 -21148.100272307907 -18883.151660530926 + 9.9000e-13 99.358256017024 0.000000000000 2265.531858933527 -21149.264149767259 -18883.732290833734 + 9.9500e-13 99.365437590893 118461652.350641697645 2265.695610644240 -21149.587715831000 -18883.892105186758 + 1.0000e-12 99.359604739027 0.000000000000 2265.562612016248 -21149.316492673417 -18883.753880657168 diff --git a/out/MD b/out/MD index f396242..28c7496 100755 Binary files a/out/MD and b/out/MD differ diff --git a/src/MD.cpp b/src/MD.cpp index 9a30330..97b4b42 100644 --- a/src/MD.cpp +++ b/src/MD.cpp @@ -38,6 +38,7 @@ double sigma = 1.; double epsilon = 1.; double m = 1.; double kB = 1.; +double epsilon_8 = epsilon * 8.; double NA = 6.022140857e23; double kBSI = 1.38064852e-23; // m^2*kg/(s^2*K) @@ -95,11 +96,9 @@ main () { char trash[10000], prefix[1000], tfn[1000], ofn[1000], afn[1000]; FILE *infp, *tfp, *ofp, *afp; - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf (" WELCOME TO WILLY P CHEM MD!\n"); - printf ( - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf (" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf ("\n ENTER A TITLE FOR YOUR CALCULATION!\n"); scanf ("%s", prefix); strcpy (tfn, prefix); @@ -109,11 +108,9 @@ main () { strcpy (afn, prefix); strcat (afn, "_average.txt"); - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf (" TITLE ENTERED AS '%s'\n", prefix); - printf ( - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf (" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); /* Table of values for Argon relating natural units to SI units: * These are derived from Lennard-Jones parameters from the article @@ -134,17 +131,14 @@ main () { // Edit these factors to be computed in terms of basic properties in // natural units of the gas being simulated - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - printf ( - " WHICH NOBLE GAS WOULD YOU LIKE TO SIMULATE? (DEFAULT IS ARGON)\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf (" WHICH NOBLE GAS WOULD YOU LIKE TO SIMULATE? (DEFAULT IS ARGON)\n"); printf ("\n FOR HELIUM, TYPE 'He' THEN PRESS 'return' TO CONTINUE\n"); printf (" FOR NEON, TYPE 'Ne' THEN PRESS 'return' TO CONTINUE\n"); printf (" FOR ARGON, TYPE 'Ar' THEN PRESS 'return' TO CONTINUE\n"); printf (" FOR KRYPTON, TYPE 'Kr' THEN PRESS 'return' TO CONTINUE\n"); printf (" FOR XENON, TYPE 'Xe' THEN PRESS 'return' TO CONTINUE\n"); - printf ( - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf (" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); scanf ("%s", atype); if (strcmp (atype, "He") == 0) { @@ -186,17 +180,13 @@ main () { timefac = 2.09618e-12; strcpy (atype, "Ar"); } - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf ("\n YOU ARE SIMULATING %s GAS! \n", atype); - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - printf ( - "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf ("\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf ("\n YOU WILL NOW ENTER A FEW SIMULATION PARAMETERS\n"); - printf ( - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf (" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf ("\n\n ENTER THE INTIAL TEMPERATURE OF YOUR GAS IN KELVIN\n"); scanf ("%lf", &Tinit); // Make sure temperature is a positive number! @@ -210,12 +200,10 @@ main () { Tinit /= TempFac; printf ("\n\n ENTER THE NUMBER DENSITY IN moles/m^3\n"); - printf ( - " FOR REFERENCE, NUMBER DENSITY OF AN IDEAL GAS AT STP IS ABOUT 40 " - "moles/m^3\n"); - printf ( - " NUMBER DENSITY OF LIQUID ARGON AT 1 ATM AND 87 K IS ABOUT 35000 " - "moles/m^3\n"); + printf (" FOR REFERENCE, NUMBER DENSITY OF AN IDEAL GAS AT STP IS ABOUT 40 " + "moles/m^3\n"); + printf (" NUMBER DENSITY OF LIQUID ARGON AT 1 ATM AND 87 K IS ABOUT 35000 " + "moles/m^3\n"); scanf ("%lf", &rho); @@ -258,9 +246,8 @@ main () { // Files that we can write different quantities to tfp = fopen (tfn, "w"); // The MD trajectory, coordinates of every // particle at each timestep - ofp = fopen ( - ofn, - "w"); // Output of other quantities (T, P, gc, etc) at every timestep + ofp = fopen (ofn, + "w"); // Output of other quantities (T, P, gc, etc) at every timestep afp = fopen (afn, "w"); // Average T, P, gc, etc from the simulation int NumTime; @@ -299,10 +286,8 @@ main () { Tavg = 0; int tenp = floor (NumTime / 10); - fprintf ( - ofp, - " time (s) T(t) (K) P(t) (Pa) " - "Kinetic En. (n.u.) Potential En. (n.u.) Total En. (n.u.)\n"); + fprintf (ofp, " time (s) T(t) (K) P(t) (Pa) " + "Kinetic En. (n.u.) Potential En. (n.u.) Total En. (n.u.)\n"); printf (" PERCENTAGE OF CALCULATION COMPLETE:\n ["); for (i = 0; i < NumTime + 1; i++) { @@ -359,8 +344,8 @@ main () { Tavg += Temp; Pavg += Press; - fprintf (ofp, " %8.4e %20.12f %20.12f %20.12f %20.12f %20.12f \n", - i * dt * timefac, Temp, Press, KE, PE, KE + PE); + fprintf (ofp, " %8.4e %20.12f %20.12f %20.12f %20.12f %20.12f \n", i * dt * timefac, + Temp, Press, KE, PE, KE + PE); } // Because we have calculated the instantaneous temperature and pressure, @@ -369,27 +354,22 @@ main () { Tavg /= NumTime; Z = Pavg * (Vol * VolFac) / (N * kBSI * Tavg); gc = NA * Pavg * (Vol * VolFac) / (N * Tavg); + fprintf (afp, " Total Time (s) T (K) P (Pa) PV/nT " + "(J/(mol K)) Z V (m^3) N\n"); + fprintf (afp, " -------------- ----------- --------------- " + "-------------- --------------- ------------ -----------\n"); fprintf (afp, - " Total Time (s) T (K) P (Pa) PV/nT " - "(J/(mol K)) Z V (m^3) N\n"); - fprintf ( - afp, - " -------------- ----------- --------------- " - "-------------- --------------- ------------ -----------\n"); - fprintf ( - afp, - " %8.4e %15.5f %15.5f %10.5f %10.5f %10.5e " - " %i\n", - i * dt * timefac, Tavg, Pavg, gc, Z, Vol * VolFac, N); + " %8.4e %15.5f %15.5f %10.5f %10.5f %10.5e " + " %i\n", + i * dt * timefac, Tavg, Pavg, gc, Z, Vol * VolFac, N); printf ("\n TO ANIMATE YOUR SIMULATION, OPEN THE FILE \n '%s' WITH VMD " "AFTER THE SIMULATION COMPLETES\n", tfn); - printf ( - "\n TO ANALYZE INSTANTANEOUS DATA ABOUT YOUR MOLECULE, OPEN THE FILE " - "\n " - " '%s' WITH YOUR FAVORITE TEXT EDITOR OR IMPORT THE DATA INTO EXCEL\n", - ofn); + printf ("\n TO ANALYZE INSTANTANEOUS DATA ABOUT YOUR MOLECULE, OPEN THE FILE " + "\n " + " '%s' WITH YOUR FAVORITE TEXT EDITOR OR IMPORT THE DATA INTO EXCEL\n", + ofn); printf ("\n THE FOLLOWING THERMODYNAMIC AVERAGES WILL BE COMPUTED AND " "WRITTEN TO THE FILE \n '%s':\n", afn); @@ -399,8 +379,7 @@ main () { printf ("\n PERCENT ERROR of pV/nT AND GAS CONSTANT: %15.5f\n", 100 * fabs (gc - 8.3144598) / 8.3144598); printf ("\n THE COMPRESSIBILITY (unitless): %15.5f \n", Z); - printf ("\n TOTAL VOLUME (m^3): %10.5e \n", - Vol * VolFac); + printf ("\n TOTAL VOLUME (m^3): %10.5e \n", Vol * VolFac); printf ("\n NUMBER OF PARTICLES (unitless): %i \n", N); fclose (tfp); @@ -495,50 +474,57 @@ Kinetic () { // Write Function here! // printf(" Total Kinetic Energy is %f\n",N*mvs*m/2.); return kin; } + +double +getF (double dist) {} + +double +getLocalPot (double dist) {} + +// void +// transposeMatrix (double mat[MAXPART][3], double matT[3][MAXPART]) { +// for (int i = 0; i < 3; i++) { +// for (int j = 0; j < MAXPART; j++) { +// matT[i][j] = mat[j][i]; +// } +// } +// } + double PotentialAndAcceleration () { - double quot, rnorm, term1, term2, Pot; - int i, j, k; - double f, dist, tmp = 0.; - double distTmp = 0; - double posItoJ[3]; // position of i relative to j - double epsilon_8 = 8. * epsilon; - memset (a, 0, sizeof (a)); + double Pot = 0.; + // double rT[3][MAXPART]; + // transposeMatrix (r, rT); - Pot = 0.; - - for (i = 0; i < N - 1; i++) { - for (j = i + 1; j < N; j++) { + for (int i = 0; i < N - 1; i++) { + for (int j = i + 1; j < N; j++) { + double quot, rnorm, term1, term2; // CALCULATE POTENTIAL ENERGY - dist = 0.; - distTmp = 0; + double dist = 0.; + double posItoJ[3]; // position of i relative to j for (int k = 0; k < 3; k++) { // POT - distTmp = r[i][k] - r[j][k]; + double distTmp = r[i][k] - r[j][k]; dist += distTmp * distTmp; // ACCEL posItoJ[k] = distTmp; } - quot = sigma / sqrt (dist); - term2 = quot * quot; - term2 = term2 * term2 * term2; - term1 = term2 * term2; - - Pot += 8 * epsilon * (term1 - term2); + quot = sigma * sigma / dist; + term2 = quot * quot * quot; + Pot += epsilon_8 * term2 * (term2 - 1); // From derivative of Lennard-Jones with sigma and epsilon // set equal to 1 in natural units! - double rSqd_inv7 - = 1.0 / (dist * dist * dist * dist * dist * dist * dist); - double rSqd_inv4 = rSqd_inv7 * dist * dist * dist; - f = 24 * (2 * rSqd_inv7 - rSqd_inv4); - + double distSqd = dist * dist; + double rSqd_inv4 = 1.0 / (distSqd * distSqd); + double rSqd_inv7 = rSqd_inv4 / (distSqd * dist); + double f = 24.0 * (2.0 * rSqd_inv7 - rSqd_inv4); // from F = ma, where m = 1 in natural units! - for (k = 0; k < 3; k++) { - tmp = posItoJ[k] * f; + for (int k = 0; k < 3; k++) { + double tmp = posItoJ[k] * f; a[i][k] += tmp; a[j][k] -= tmp; } @@ -599,8 +585,7 @@ computeAccelerations () { } // From derivative of Lennard-Jones with sigma and epsilon // set equal to 1 in natural units! - double rSqd_inv7 - = 1.0 / (rSqd * rSqd * rSqd * rSqd * rSqd * rSqd * rSqd); + double rSqd_inv7 = 1.0 / (rSqd * rSqd * rSqd * rSqd * rSqd * rSqd * rSqd); double rSqd_inv4 = rSqd_inv7 * rSqd * rSqd * rSqd; f = 24 * (2 * rSqd_inv7 - rSqd_inv4); @@ -648,16 +633,14 @@ VelocityVerlet (double dt, int iter, double *PE, FILE *fp) { for (i = 0; i < N; i++) { for (j = 0; j < 3; j++) { if (r[i][j] < 0.) { - v[i][j] *= -1.; //- elastic walls - psum - += 2 * m * fabs (v[i][j]) / dt; // contribution to pressure - // from "left" walls + v[i][j] *= -1.; //- elastic walls + psum += 2 * m * fabs (v[i][j]) / dt; // contribution to pressure + // from "left" walls } if (r[i][j] >= L) { - v[i][j] *= -1.; //- elastic walls - psum - += 2 * m * fabs (v[i][j]) / dt; // contribution to pressure - // from "right" walls + v[i][j] *= -1.; //- elastic walls + psum += 2 * m * fabs (v[i][j]) / dt; // contribution to pressure + // from "right" walls } } }