Removed Sqrt function and optimized multiplications

This commit is contained in:
Afonso Franco 2023-10-16 19:29:22 +01:00
parent 44e386f674
commit 4c27b3c774
Signed by: afonso
SSH key fingerprint: SHA256:JiuxZNdA5bRWXPMUJChI0AQ75yC+cXY4xM0IaVwEVys
9 changed files with 626 additions and 268 deletions

View file

@ -3,3 +3,4 @@ IndentWidth: 4
TabWidth: 4
UseTab: Always
BreakBeforeBraces: Attach
ColumnLimit: 100

View file

@ -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

View file

@ -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×"];
}

View file

@ -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
<spontaneous>
[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
`<spontaneous>' 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()

View file

@ -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×"];
}

View file

@ -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
<spontaneous>
[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
`<spontaneous>' 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()

View file

@ -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

BIN
out/MD

Binary file not shown.

View file

@ -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,11 +200,9 @@ 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 "
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 "
printf (" NUMBER DENSITY OF LIQUID ARGON AT 1 ATM AND 87 K IS ABOUT 35000 "
"moles/m^3\n");
scanf ("%lf", &rho);
@ -258,8 +246,7 @@ 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,
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
@ -299,9 +286,7 @@ main () {
Tavg = 0;
int tenp = floor (NumTime / 10);
fprintf (
ofp,
" time (s) T(t) (K) P(t) (Pa) "
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,15 +354,11 @@ 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 "
fprintf (afp, " Total Time (s) T (K) P (Pa) PV/nT "
"(J/(mol K)) Z V (m^3) N\n");
fprintf (
afp,
" -------------- ----------- --------------- "
fprintf (afp, " -------------- ----------- --------------- "
"-------------- --------------- ------------ -----------\n");
fprintf (
afp,
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);
@ -385,8 +366,7 @@ main () {
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 "
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);
@ -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);
@ -649,14 +634,12 @@ VelocityVerlet (double dt, int iter, double *PE, FILE *fp) {
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
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
psum += 2 * m * fabs (v[i][j]) / dt; // contribution to pressure
// from "right" walls
}
}