Added ability to configure/ command the well via a lightweight HTTP server in the java program

Also adds another csv file for testing
This commit is contained in:
Patrick McDonagh
2017-03-01 12:16:21 -06:00
parent 0c42974921
commit 5ae934ce86
7 changed files with 1038 additions and 124 deletions

181
.idea/workspace.xml generated
View File

@@ -2,10 +2,10 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="28cc251f-c94f-44ee-a66d-77aaab6e3483" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/POC.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/POC.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/templates/config.jinja2" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/templates/config.jinja2" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" />
</list>
<ignored path="$PROJECT_DIR$/target/" />
<ignored path="$PROJECT_DIR$/.gradle/" />
@@ -128,50 +128,52 @@
<file leaf-file-name="Well.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="180" column="38" lean-forward="true" selection-start-line="180" selection-start-column="38" selection-end-line="180" selection-end-column="38" />
<state relative-caret-position="105">
<caret line="637" column="0" lean-forward="true" selection-start-line="637" selection-start-column="0" selection-end-line="637" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#14281#14282#0" expanded="true" />
<element signature="e#14331#14332#0" expanded="true" />
<element signature="e#14393#14394#0" expanded="true" />
<element signature="e#14447#14448#0" expanded="true" />
<element signature="e#14505#14506#0" expanded="true" />
<element signature="e#14555#14556#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WebServer.java" pinned="false" current-in-tab="true">
<file leaf-file-name="Simulation.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Simulation.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-70">
<caret line="17" column="33" lean-forward="true" selection-start-line="17" selection-start-column="33" selection-end-line="17" selection-end-column="33" />
<folding>
<element signature="e#1619#1620#0" expanded="true" />
<element signature="e#1656#1657#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="barneyWell.json" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/barneyWell.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="2" lean-forward="false" selection-start-line="1" selection-start-column="2" selection-end-line="1" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WebServer.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="55" column="0" lean-forward="true" selection-start-line="55" selection-start-column="0" selection-end-line="55" selection-end-column="0" />
<state relative-caret-position="230">
<caret line="52" column="52" lean-forward="true" selection-start-line="52" selection-start-column="52" selection-end-line="52" selection-end-column="52" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Measurement.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Measurement.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1665">
<caret line="133" column="45" lean-forward="false" selection-start-line="133" selection-start-column="45" selection-end-line="133" selection-end-column="45" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#2809#2810#0" expanded="false" />
<element signature="e#2844#2845#0" expanded="false" />
<element signature="e#2880#2881#0" expanded="false" />
<element signature="e#2912#2913#0" expanded="false" />
<element signature="e#2946#2947#0" expanded="false" />
<element signature="e#2976#2977#0" expanded="false" />
<element signature="e#3008#3009#0" expanded="false" />
<element signature="e#3036#3037#0" expanded="false" />
<element signature="e#3076#3077#0" expanded="false" />
<element signature="e#3114#3115#0" expanded="false" />
<element signature="e#3148#3149#0" expanded="false" />
<element signature="e#3178#3179#0" expanded="false" />
<element signature="e#3213#3214#0" expanded="false" />
<element signature="e#3244#3245#0" expanded="false" />
<element signature="e#3279#3280#0" expanded="false" />
<element signature="e#3310#3311#0" expanded="false" />
<element signature="e#958#974#0" expanded="true" />
</folding>
</state>
</provider>
@@ -296,7 +298,7 @@
<file leaf-file-name="Database.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1145">
<state relative-caret-position="455">
<caret line="283" column="43" lean-forward="true" selection-start-line="283" selection-start-column="43" selection-end-line="283" selection-end-column="43" />
<folding>
<element signature="e#10364#10374#0" expanded="true" />
@@ -748,9 +750,9 @@
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/CLScanner.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/IOControl.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/POC.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" />
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" />
</list>
</option>
</component>
@@ -765,8 +767,9 @@
<treeState />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="4014" />
<option name="y" value="23" />
<option name="width" value="1680" />
<option name="width" value="1374" />
<option name="height" value="959" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
@@ -1116,7 +1119,7 @@
<servers />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1680" height="959" extended-state="6" />
<frame x="4014" y="23" width="1374" height="959" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
@@ -1133,7 +1136,7 @@
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1935287" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.237988" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32967034" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24973376" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@@ -1357,6 +1360,12 @@
<caret line="875" column="5" lean-forward="true" selection-start-line="875" selection-start-column="5" selection-end-line="875" selection-end-column="5" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#14281#14282#0" expanded="true" />
<element signature="e#14331#14332#0" expanded="true" />
<element signature="e#14393#14394#0" expanded="true" />
<element signature="e#14447#14448#0" expanded="true" />
<element signature="e#14505#14506#0" expanded="true" />
<element signature="e#14555#14556#0" expanded="true" />
</folding>
</state>
</provider>
@@ -1599,16 +1608,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Simulation.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="588">
<caret line="61" column="5" lean-forward="false" selection-start-line="61" selection-start-column="5" selection-end-line="61" selection-end-column="5" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/IO.java" />
<entry file="file://$PROJECT_DIR$/pom.xml" />
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/src.zip!/java/awt/Button.java">
@@ -1850,14 +1849,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/barneyWell.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="2" lean-forward="false" selection-start-line="1" selection-start-column="2" selection-end-line="1" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/barneyWell.json.bak">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="390">
@@ -1874,26 +1865,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1145">
<caret line="283" column="43" lean-forward="true" selection-start-line="283" selection-start-column="43" selection-end-line="283" selection-end-column="43" />
<folding>
<element signature="e#10364#10374#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="180" column="38" lean-forward="true" selection-start-line="180" selection-start-column="38" selection-end-line="180" selection-end-column="38" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/IOControl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="915">
@@ -1910,12 +1881,58 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="455">
<caret line="283" column="43" lean-forward="true" selection-start-line="283" selection-start-column="43" selection-end-line="283" selection-end-column="43" />
<folding>
<element signature="e#10364#10374#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/barneyWell.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="2" lean-forward="false" selection-start-line="1" selection-start-column="2" selection-end-line="1" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="55" column="0" lean-forward="true" selection-start-line="55" selection-start-column="0" selection-end-line="55" selection-end-column="0" />
<state relative-caret-position="230">
<caret line="52" column="52" lean-forward="true" selection-start-line="52" selection-start-column="52" selection-end-line="52" selection-end-column="52" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#958#974#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="637" column="0" lean-forward="true" selection-start-line="637" selection-start-column="0" selection-end-line="637" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#14281#14282#0" expanded="true" />
<element signature="e#14331#14332#0" expanded="true" />
<element signature="e#14393#14394#0" expanded="true" />
<element signature="e#14447#14448#0" expanded="true" />
<element signature="e#14505#14506#0" expanded="true" />
<element signature="e#14555#14556#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Simulation.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-70">
<caret line="17" column="33" lean-forward="true" selection-start-line="17" selection-start-column="33" selection-end-line="17" selection-end-column="33" />
<folding>
<element signature="e#1619#1620#0" expanded="true" />
<element signature="e#1656#1657#0" expanded="true" />
</folding>
</state>
</provider>

View File

@@ -42,3 +42,45 @@ Enable the systemd script with:
```
systemctl enable mongod.service
```
# Local Web API
## Endpoint `/config?`
### `update=<doUpdate:string>`
- if doUpdate = `true`, the well configuration will be updated.
- returns `{"configUpdated: <result>"}`
### `fluidOilRatio=<newRatio:double>`
- sets the fluidOilRatio (BBL oil to every 1 BBL fluid producted) to `newRatio`
- returns `{"fluidOilRatio": <fluidOilRatio>}`
### `fluidWaterRatio=<newRatio:double>`
- sets the fluidWaterRatio (BBL water to every 1 BBL fluid producted) to `newRatio`
- returns `{"fluidWaterRatio": <fluidWaterRatio>}`
### `fluidGasMCFRatio=<newRatio:double>`
- sets the fluidGasMCFRatio (MCF gas to every 1 BBL fluid producted) to `newRatio`
- returns `{"fluidGasMCFRatio": <fluidGasMCFRatio>}`
### `pumpOffSetpoint=<newSetpoint:double>`
- sets the pump-off fill percent setpoint to `newSetpoint`
- returns `{"pumpOffSetpoint": <pumpOffSetpoint>}`
### `pumpOffStrokes=<newSetpoint:long>`
- sets the number of low-fillage strokes required for pump-off to `newSetpoint`
- returns `{"pumpOffStrokes": <pumpOffStrokes>}`
### `pumpOffDowntime=<newSetpoint:long>`
- sets the minutes of downtime after pumpoff to `newSetpoint`
- returns `{"pumpOffDowntime": <pumpOffDowntime>}`
## Endpoint `/command?`
### `start=<startCommand:string>`
- if startCommand = `true`, the well will attempt to start.
- returns `{"startCommand: <result>", "status": <runStatus>}`
### `stop=<startCommand:string>`
- if stopCommand = `true`, the well will attempt to stop.
- returns `{"stopCommand: <result>", "status": <runStatus>}`

673
mallet.csv Normal file
View File

@@ -0,0 +1,673 @@
0,8484.74
0.066215,8615.27
0.171112,8951.1
0.316819,9280.12
0.498586,9613.75
0.715024,10084.6
0.97621,10624.4
1.2883,10886
1.63867,10787.3
2.02093,10515.7
2.43243,10317
2.87705,10188.2
3.36461,10107.5
3.8875,10058.3
4.44299,10128.3
5.03967,10279.2
5.67946,10368
6.35611,10397.3
7.05754,10422.5
7.7809,10496.4
8.53069,10721.6
9.32235,11145.6
10.1506,11569.2
11.013,12015.8
11.9097,12514.9
12.842,12892
13.8065,12964.3
14.7986,12892.5
15.8226,12869.7
16.8842,12904.7
17.9785,12974.2
19.1005,13055.2
20.2442,13145.5
21.4129,13406.1
22.6127,13789.8
23.8375,13974.4
25.0839,14102
26.3506,14397.5
27.6347,14832.5
28.936,15269.6
30.2719,15730.9
31.6607,16128.3
33.0885,16138.4
34.5314,15870.9
35.9861,15687
37.4602,15666
38.9614,15642.7
40.4966,15570.9
42.0607,15503.3
43.6394,15452.3
45.2335,15386.8
46.8483,15105.5
48.4878,14678
50.152,14434.2
51.8308,14364.4
53.5259,14356.1
55.2375,14236.2
56.9713,14093.1
58.7226,13891.4
60.4832,13598.9
62.2413,13513.1
64.007,13694.1
65.7803,13886.4
67.5656,13987.5
69.3593,14073.4
71.1599,14208.2
72.9585,14286.5
74.7583,14322
76.556,14312
78.3522,14427.3
80.1504,14687.4
81.9521,14818.9
83.7547,14816.3
85.5546,14750.8
87.3472,14682.4
89.1313,14642.8
90.9046,14661.6
92.6711,14728.2
94.4368,14709.3
96.2018,14537.4
97.9579,14323.4
99.6993,14149.4
101.428,13975.5
103.143,13769.3
104.844,13652.9
106.527,13573.9
108.191,13526.9
109.842,13466.2
111.478,13316.7
113.09,13212.9
114.669,13210.8
116.219,13258
117.74,13319.1
119.238,13443.1
120.709,13533.1
122.148,13525.3
123.547,13536
124.909,13699.2
126.234,14000.9
127.523,14235.3
128.772,14383.4
129.979,14674.1
131.149,14953.1
132.282,14981
133.374,14929.8
134.416,14898.1
135.41,14954.7
136.359,14988.7
137.266,14932.4
138.126,14798
138.939,14617.8
139.7,14300.7
140.403,13873.7
141.05,13581.8
141.639,13342
142.175,13062.5
142.646,12627.3
143.058,12231.8
143.405,11767.8
143.683,11330.1
143.878,10991
143.996,10990.7
144,11457.4
143.95,13420
143.839,14602.7
143.662,15329.3
143.407,15622.4
143.091,15098.6
142.687,14170.6
142.183,13026.4
141.6,12231.2
140.93,11669.8
140.172,11416.2
139.341,11030.2
138.434,10372.5
137.43,9651.43
136.346,9073.28
135.19,8552.75
133.945,7961.3
132.611,7503.35
131.196,7265.97
129.659,7476.43
128.044,8425.79
126.37,8998.29
124.599,9058.83
122.758,8750.14
120.876,7922.02
119.005,6829.66
117.1,5739.27
115.16,4938.02
113.195,4556.92
111.124,4009.97
108.956,3076.65
106.734,2809.43
104.501,3435.44
102.236,4114.62
99.8892,4774.08
97.4932,5494.42
95.0781,6051.92
92.6506,6267.32
90.2226,6215.52
87.773,6104.6
85.3137,6203.32
82.8008,6609.69
80.2456,7243.11
77.6691,7868.18
75.059,8409.37
72.4444,8770.91
69.889,9123
67.3891,9726.37
64.9092,10533.1
62.449,10876.2
60.006,10686.3
57.606,10357
55.2767,9938.64
53.0145,9433.22
50.7868,8896.33
48.581,8634.28
46.4189,8698.11
44.3031,8840.73
42.2375,8833.26
40.2273,8726.52
38.2721,8607.14
36.3855,8449.8
34.5648,8343.22
32.8088,8334.71
31.0978,8226.37
29.4095,7798.63
27.7617,7187.13
26.1538,6973.54
24.6108,7240.64
23.1211,7661.24
21.6577,8004.98
20.237,8433.32
18.8709,9012.46
17.57,9429.65
16.3306,9509.81
15.1428,9421.25
13.9942,9405.43
12.8928,9478.66
11.837,9530.74
10.8323,9548.98
9.88763,9552.49
8.99399,9483.55
8.1242,9405.81
7.2898,9492.06
6.51456,9765.15
5.80287,9996.22
5.14662,9887.11
4.5243,9551.61
3.93801,9254.68
3.40371,8961.15
2.91193,8378.6
2.4483,7819.07
2.01826,7649.43
1.63363,7745.02
1.29812,7860
1.00485,7939.93
0.741844,8024.7
0.515951,8110.57
0.329747,8151.66
0.179453,8272.08
0.073617,8535.67
0.018252,8665.32
0,8484.74
0.066215,8615.27
0.171112,8951.1
0.316819,9280.12
0.498586,9613.75
0.715024,10084.6
0.97621,10624.4
1.2883,10886
1.63867,10787.3
2.02093,10515.7
2.43243,10317
2.87705,10188.2
3.36461,10107.5
3.8875,10058.3
4.44299,10128.3
5.03967,10279.2
5.67946,10368
6.35611,10397.3
7.05754,10422.5
7.7809,10496.4
8.53069,10721.6
9.32235,11145.6
10.1506,11569.2
11.013,12015.8
11.9097,12514.9
12.842,12892
13.8065,12964.3
14.7986,12892.5
15.8226,12869.7
16.8842,12904.7
17.9785,12974.2
19.1005,13055.2
20.2442,13145.5
21.4129,13406.1
22.6127,13789.8
23.8375,13974.4
25.0839,14102
26.3506,14397.5
27.6347,14832.5
28.936,15269.6
30.2719,15730.9
31.6607,16128.3
33.0885,16138.4
34.5314,15870.9
35.9861,15687
37.4602,15666
38.9614,15642.7
40.4966,15570.9
42.0607,15503.3
43.6394,15452.3
45.2335,15386.8
46.8483,15105.5
48.4878,14678
50.152,14434.2
51.8308,14364.4
53.5259,14356.1
55.2375,14236.2
56.9713,14093.1
58.7226,13891.4
60.4832,13598.9
62.2413,13513.1
64.007,13694.1
65.7803,13886.4
67.5656,13987.5
69.3593,14073.4
71.1599,14208.2
72.9585,14286.5
74.7583,14322
76.556,14312
78.3522,14427.3
80.1504,14687.4
81.9521,14818.9
83.7547,14816.3
85.5546,14750.8
87.3472,14682.4
89.1313,14642.8
90.9046,14661.6
92.6711,14728.2
94.4368,14709.3
96.2018,14537.4
97.9579,14323.4
99.6993,14149.4
101.428,13975.5
103.143,13769.3
104.844,13652.9
106.527,13573.9
108.191,13526.9
109.842,13466.2
111.478,13316.7
113.09,13212.9
114.669,13210.8
116.219,13258
117.74,13319.1
119.238,13443.1
120.709,13533.1
122.148,13525.3
123.547,13536
124.909,13699.2
126.234,14000.9
127.523,14235.3
128.772,14383.4
129.979,14674.1
131.149,14953.1
132.282,14981
133.374,14929.8
134.416,14898.1
135.41,14954.7
136.359,14988.7
137.266,14932.4
138.126,14798
138.939,14617.8
139.7,14300.7
140.403,13873.7
141.05,13581.8
141.639,13342
142.175,13062.5
142.646,12627.3
143.058,12231.8
143.405,11767.8
143.683,11330.1
143.878,10991
143.996,10990.7
144,11457.4
143.95,13420
143.839,14602.7
143.662,15329.3
143.407,15622.4
143.091,15098.6
142.687,14170.6
142.183,13026.4
141.6,12231.2
140.93,11669.8
140.172,11416.2
139.341,11030.2
138.434,10372.5
137.43,9651.43
136.346,9073.28
135.19,8552.75
133.945,7961.3
132.611,7503.35
131.196,7265.97
129.659,7476.43
128.044,8425.79
126.37,8998.29
124.599,9058.83
122.758,8750.14
120.876,7922.02
119.005,6829.66
117.1,5739.27
115.16,4938.02
113.195,4556.92
111.124,4009.97
108.956,3076.65
106.734,2809.43
104.501,3435.44
102.236,4114.62
99.8892,4774.08
97.4932,5494.42
95.0781,6051.92
92.6506,6267.32
90.2226,6215.52
87.773,6104.6
85.3137,6203.32
82.8008,6609.69
80.2456,7243.11
77.6691,7868.18
75.059,8409.37
72.4444,8770.91
69.889,9123
67.3891,9726.37
64.9092,10533.1
62.449,10876.2
60.006,10686.3
57.606,10357
55.2767,9938.64
53.0145,9433.22
50.7868,8896.33
48.581,8634.28
46.4189,8698.11
44.3031,8840.73
42.2375,8833.26
40.2273,8726.52
38.2721,8607.14
36.3855,8449.8
34.5648,8343.22
32.8088,8334.71
31.0978,8226.37
29.4095,7798.63
27.7617,7187.13
26.1538,6973.54
24.6108,7240.64
23.1211,7661.24
21.6577,8004.98
20.237,8433.32
18.8709,9012.46
17.57,9429.65
16.3306,9509.81
15.1428,9421.25
13.9942,9405.43
12.8928,9478.66
11.837,9530.74
10.8323,9548.98
9.88763,9552.49
8.99399,9483.55
8.1242,9405.81
7.2898,9492.06
6.51456,9765.15
5.80287,9996.22
5.14662,9887.11
4.5243,9551.61
3.93801,9254.68
3.40371,8961.15
2.91193,8378.6
2.4483,7819.07
2.01826,7649.43
1.63363,7745.02
1.29812,7860
1.00485,7939.93
0.741844,8024.7
0.515951,8110.57
0.329747,8151.66
0.179453,8272.08
0.073617,8535.67
0.018252,8665.32
0,8566.76
0.066215,8484.74
0.171112,8615.27
0.316819,8951.1
0.498586,9280.12
0.715024,9613.75
0.97621,10084.6
1.2883,10624.4
1.63867,10886
2.02093,10787.3
2.43243,10515.7
2.87705,10317
3.36461,10188.2
3.8875,10107.5
4.44299,10058.3
5.03967,10128.3
5.67946,10279.2
6.35611,10368
7.05754,10397.3
7.7809,10422.5
8.53069,10496.4
9.32235,10721.6
10.1506,11145.6
11.013,11569.2
11.9097,12015.8
12.842,12514.9
13.8065,12892
14.7986,12964.3
15.8226,12892.5
16.8842,12869.7
17.9785,12904.7
19.1005,12974.2
20.2442,13055.2
21.4129,13145.5
22.6127,13406.1
23.8375,13789.8
25.0839,13974.4
26.3506,14102
27.6347,14397.5
28.936,14832.5
30.2719,15269.6
31.6607,15730.9
33.0885,16128.3
34.5314,16138.4
35.9861,15870.9
37.4602,15687
38.9614,15666
40.4966,15642.7
42.0607,15570.9
43.6394,15503.3
45.2335,15452.3
46.8483,15386.8
48.4878,15105.5
50.152,14678
51.8308,14434.2
53.5259,14364.4
55.2375,14356.1
56.9713,14236.2
58.7226,14093.1
60.4832,13891.4
62.2413,13598.9
64.007,13513.1
65.7803,13694.1
67.5656,13886.4
69.3593,13987.5
71.1599,14073.4
72.9585,14208.2
74.7583,14286.5
76.556,14322
78.3522,14312
80.1504,14427.3
81.9521,14687.4
83.7547,14818.9
85.5546,14816.3
87.3472,14750.8
89.1313,14682.4
90.9046,14642.8
92.6711,14661.6
94.4368,14728.2
96.2018,14709.3
97.9579,14537.4
99.6993,14323.4
101.428,14149.4
103.143,13975.5
104.844,13769.3
106.527,13652.9
108.191,13573.9
109.842,13526.9
111.478,13466.2
113.09,13316.7
114.669,13212.9
116.219,13210.8
117.74,13258
119.238,13319.1
120.709,13443.1
122.148,13533.1
123.547,13525.3
124.909,13536
126.234,13699.2
127.523,14000.9
128.772,14235.3
129.979,14383.4
131.149,14674.1
132.282,14953.1
133.374,14981
134.416,14929.8
135.41,14898.1
136.359,14954.7
137.266,14988.7
138.126,14932.4
138.939,14798
139.7,14617.8
140.403,14300.7
141.05,13873.7
141.639,13581.8
142.175,13342
142.646,13062.5
143.058,12627.3
143.405,12231.8
143.683,11767.8
143.878,11330.1
143.996,10991
144,10990.7
143.95,11457.4
143.839,13420
143.662,14602.7
143.407,15329.3
143.091,15622.4
142.687,15098.6
142.183,14170.6
141.6,13026.4
140.93,12231.2
140.172,11669.8
139.341,11416.2
138.434,11030.2
137.43,10372.5
136.346,9651.43
135.19,9073.28
133.945,8552.75
132.611,7961.3
131.196,7503.35
129.659,7265.97
128.044,7476.43
126.37,8425.79
124.599,8998.29
122.758,9058.83
120.876,8750.14
119.005,7922.02
117.1,6829.66
115.16,5739.27
113.195,4938.02
111.124,4556.92
108.956,4009.97
106.734,3076.65
104.501,2809.43
102.236,3435.44
99.8892,4114.62
97.4932,4774.08
95.0781,5494.42
92.6506,6051.92
90.2226,6267.32
87.773,6215.52
85.3137,6104.6
82.8008,6203.32
80.2456,6609.69
77.6691,7243.11
75.059,7868.18
72.4444,8409.37
69.889,8770.91
67.3891,9123
64.9092,9726.37
62.449,10533.1
60.006,10876.2
57.606,10686.3
55.2767,10357
53.0145,9938.64
50.7868,9433.22
48.581,8896.33
46.4189,8634.28
44.3031,8698.11
42.2375,8840.73
40.2273,8833.26
38.2721,8726.52
36.3855,8607.14
34.5648,8449.8
32.8088,8343.22
31.0978,8334.71
29.4095,8226.37
27.7617,7798.63
26.1538,7187.13
24.6108,6973.54
23.1211,7240.64
21.6577,7661.24
20.237,8004.98
18.8709,8433.32
17.57,9012.46
16.3306,9429.65
15.1428,9509.81
13.9942,9421.25
12.8928,9405.43
11.837,9478.66
10.8323,9530.74
9.88763,9548.98
8.99399,9552.49
8.1242,9483.55
7.2898,9405.81
6.51456,9492.06
5.80287,9765.15
5.14662,9996.22
4.5243,9887.11
3.93801,9551.61
3.40371,9254.68
2.91193,8961.15
2.4483,8378.6
2.01826,7819.07
1.63363,7649.43
1.29812,7745.02
1.00485,7860
0.741844,7939.93
0.515951,8024.7
0.329747,8110.57
0.179453,8151.66
0.073617,8272.08
0.018252,8535.67
0,8665.32
1 0 8484.74
2 0.066215 8615.27
3 0.171112 8951.1
4 0.316819 9280.12
5 0.498586 9613.75
6 0.715024 10084.6
7 0.97621 10624.4
8 1.2883 10886
9 1.63867 10787.3
10 2.02093 10515.7
11 2.43243 10317
12 2.87705 10188.2
13 3.36461 10107.5
14 3.8875 10058.3
15 4.44299 10128.3
16 5.03967 10279.2
17 5.67946 10368
18 6.35611 10397.3
19 7.05754 10422.5
20 7.7809 10496.4
21 8.53069 10721.6
22 9.32235 11145.6
23 10.1506 11569.2
24 11.013 12015.8
25 11.9097 12514.9
26 12.842 12892
27 13.8065 12964.3
28 14.7986 12892.5
29 15.8226 12869.7
30 16.8842 12904.7
31 17.9785 12974.2
32 19.1005 13055.2
33 20.2442 13145.5
34 21.4129 13406.1
35 22.6127 13789.8
36 23.8375 13974.4
37 25.0839 14102
38 26.3506 14397.5
39 27.6347 14832.5
40 28.936 15269.6
41 30.2719 15730.9
42 31.6607 16128.3
43 33.0885 16138.4
44 34.5314 15870.9
45 35.9861 15687
46 37.4602 15666
47 38.9614 15642.7
48 40.4966 15570.9
49 42.0607 15503.3
50 43.6394 15452.3
51 45.2335 15386.8
52 46.8483 15105.5
53 48.4878 14678
54 50.152 14434.2
55 51.8308 14364.4
56 53.5259 14356.1
57 55.2375 14236.2
58 56.9713 14093.1
59 58.7226 13891.4
60 60.4832 13598.9
61 62.2413 13513.1
62 64.007 13694.1
63 65.7803 13886.4
64 67.5656 13987.5
65 69.3593 14073.4
66 71.1599 14208.2
67 72.9585 14286.5
68 74.7583 14322
69 76.556 14312
70 78.3522 14427.3
71 80.1504 14687.4
72 81.9521 14818.9
73 83.7547 14816.3
74 85.5546 14750.8
75 87.3472 14682.4
76 89.1313 14642.8
77 90.9046 14661.6
78 92.6711 14728.2
79 94.4368 14709.3
80 96.2018 14537.4
81 97.9579 14323.4
82 99.6993 14149.4
83 101.428 13975.5
84 103.143 13769.3
85 104.844 13652.9
86 106.527 13573.9
87 108.191 13526.9
88 109.842 13466.2
89 111.478 13316.7
90 113.09 13212.9
91 114.669 13210.8
92 116.219 13258
93 117.74 13319.1
94 119.238 13443.1
95 120.709 13533.1
96 122.148 13525.3
97 123.547 13536
98 124.909 13699.2
99 126.234 14000.9
100 127.523 14235.3
101 128.772 14383.4
102 129.979 14674.1
103 131.149 14953.1
104 132.282 14981
105 133.374 14929.8
106 134.416 14898.1
107 135.41 14954.7
108 136.359 14988.7
109 137.266 14932.4
110 138.126 14798
111 138.939 14617.8
112 139.7 14300.7
113 140.403 13873.7
114 141.05 13581.8
115 141.639 13342
116 142.175 13062.5
117 142.646 12627.3
118 143.058 12231.8
119 143.405 11767.8
120 143.683 11330.1
121 143.878 10991
122 143.996 10990.7
123 144 11457.4
124 143.95 13420
125 143.839 14602.7
126 143.662 15329.3
127 143.407 15622.4
128 143.091 15098.6
129 142.687 14170.6
130 142.183 13026.4
131 141.6 12231.2
132 140.93 11669.8
133 140.172 11416.2
134 139.341 11030.2
135 138.434 10372.5
136 137.43 9651.43
137 136.346 9073.28
138 135.19 8552.75
139 133.945 7961.3
140 132.611 7503.35
141 131.196 7265.97
142 129.659 7476.43
143 128.044 8425.79
144 126.37 8998.29
145 124.599 9058.83
146 122.758 8750.14
147 120.876 7922.02
148 119.005 6829.66
149 117.1 5739.27
150 115.16 4938.02
151 113.195 4556.92
152 111.124 4009.97
153 108.956 3076.65
154 106.734 2809.43
155 104.501 3435.44
156 102.236 4114.62
157 99.8892 4774.08
158 97.4932 5494.42
159 95.0781 6051.92
160 92.6506 6267.32
161 90.2226 6215.52
162 87.773 6104.6
163 85.3137 6203.32
164 82.8008 6609.69
165 80.2456 7243.11
166 77.6691 7868.18
167 75.059 8409.37
168 72.4444 8770.91
169 69.889 9123
170 67.3891 9726.37
171 64.9092 10533.1
172 62.449 10876.2
173 60.006 10686.3
174 57.606 10357
175 55.2767 9938.64
176 53.0145 9433.22
177 50.7868 8896.33
178 48.581 8634.28
179 46.4189 8698.11
180 44.3031 8840.73
181 42.2375 8833.26
182 40.2273 8726.52
183 38.2721 8607.14
184 36.3855 8449.8
185 34.5648 8343.22
186 32.8088 8334.71
187 31.0978 8226.37
188 29.4095 7798.63
189 27.7617 7187.13
190 26.1538 6973.54
191 24.6108 7240.64
192 23.1211 7661.24
193 21.6577 8004.98
194 20.237 8433.32
195 18.8709 9012.46
196 17.57 9429.65
197 16.3306 9509.81
198 15.1428 9421.25
199 13.9942 9405.43
200 12.8928 9478.66
201 11.837 9530.74
202 10.8323 9548.98
203 9.88763 9552.49
204 8.99399 9483.55
205 8.1242 9405.81
206 7.2898 9492.06
207 6.51456 9765.15
208 5.80287 9996.22
209 5.14662 9887.11
210 4.5243 9551.61
211 3.93801 9254.68
212 3.40371 8961.15
213 2.91193 8378.6
214 2.4483 7819.07
215 2.01826 7649.43
216 1.63363 7745.02
217 1.29812 7860
218 1.00485 7939.93
219 0.741844 8024.7
220 0.515951 8110.57
221 0.329747 8151.66
222 0.179453 8272.08
223 0.073617 8535.67
224 0.018252 8665.32
225 0 8484.74
226 0.066215 8615.27
227 0.171112 8951.1
228 0.316819 9280.12
229 0.498586 9613.75
230 0.715024 10084.6
231 0.97621 10624.4
232 1.2883 10886
233 1.63867 10787.3
234 2.02093 10515.7
235 2.43243 10317
236 2.87705 10188.2
237 3.36461 10107.5
238 3.8875 10058.3
239 4.44299 10128.3
240 5.03967 10279.2
241 5.67946 10368
242 6.35611 10397.3
243 7.05754 10422.5
244 7.7809 10496.4
245 8.53069 10721.6
246 9.32235 11145.6
247 10.1506 11569.2
248 11.013 12015.8
249 11.9097 12514.9
250 12.842 12892
251 13.8065 12964.3
252 14.7986 12892.5
253 15.8226 12869.7
254 16.8842 12904.7
255 17.9785 12974.2
256 19.1005 13055.2
257 20.2442 13145.5
258 21.4129 13406.1
259 22.6127 13789.8
260 23.8375 13974.4
261 25.0839 14102
262 26.3506 14397.5
263 27.6347 14832.5
264 28.936 15269.6
265 30.2719 15730.9
266 31.6607 16128.3
267 33.0885 16138.4
268 34.5314 15870.9
269 35.9861 15687
270 37.4602 15666
271 38.9614 15642.7
272 40.4966 15570.9
273 42.0607 15503.3
274 43.6394 15452.3
275 45.2335 15386.8
276 46.8483 15105.5
277 48.4878 14678
278 50.152 14434.2
279 51.8308 14364.4
280 53.5259 14356.1
281 55.2375 14236.2
282 56.9713 14093.1
283 58.7226 13891.4
284 60.4832 13598.9
285 62.2413 13513.1
286 64.007 13694.1
287 65.7803 13886.4
288 67.5656 13987.5
289 69.3593 14073.4
290 71.1599 14208.2
291 72.9585 14286.5
292 74.7583 14322
293 76.556 14312
294 78.3522 14427.3
295 80.1504 14687.4
296 81.9521 14818.9
297 83.7547 14816.3
298 85.5546 14750.8
299 87.3472 14682.4
300 89.1313 14642.8
301 90.9046 14661.6
302 92.6711 14728.2
303 94.4368 14709.3
304 96.2018 14537.4
305 97.9579 14323.4
306 99.6993 14149.4
307 101.428 13975.5
308 103.143 13769.3
309 104.844 13652.9
310 106.527 13573.9
311 108.191 13526.9
312 109.842 13466.2
313 111.478 13316.7
314 113.09 13212.9
315 114.669 13210.8
316 116.219 13258
317 117.74 13319.1
318 119.238 13443.1
319 120.709 13533.1
320 122.148 13525.3
321 123.547 13536
322 124.909 13699.2
323 126.234 14000.9
324 127.523 14235.3
325 128.772 14383.4
326 129.979 14674.1
327 131.149 14953.1
328 132.282 14981
329 133.374 14929.8
330 134.416 14898.1
331 135.41 14954.7
332 136.359 14988.7
333 137.266 14932.4
334 138.126 14798
335 138.939 14617.8
336 139.7 14300.7
337 140.403 13873.7
338 141.05 13581.8
339 141.639 13342
340 142.175 13062.5
341 142.646 12627.3
342 143.058 12231.8
343 143.405 11767.8
344 143.683 11330.1
345 143.878 10991
346 143.996 10990.7
347 144 11457.4
348 143.95 13420
349 143.839 14602.7
350 143.662 15329.3
351 143.407 15622.4
352 143.091 15098.6
353 142.687 14170.6
354 142.183 13026.4
355 141.6 12231.2
356 140.93 11669.8
357 140.172 11416.2
358 139.341 11030.2
359 138.434 10372.5
360 137.43 9651.43
361 136.346 9073.28
362 135.19 8552.75
363 133.945 7961.3
364 132.611 7503.35
365 131.196 7265.97
366 129.659 7476.43
367 128.044 8425.79
368 126.37 8998.29
369 124.599 9058.83
370 122.758 8750.14
371 120.876 7922.02
372 119.005 6829.66
373 117.1 5739.27
374 115.16 4938.02
375 113.195 4556.92
376 111.124 4009.97
377 108.956 3076.65
378 106.734 2809.43
379 104.501 3435.44
380 102.236 4114.62
381 99.8892 4774.08
382 97.4932 5494.42
383 95.0781 6051.92
384 92.6506 6267.32
385 90.2226 6215.52
386 87.773 6104.6
387 85.3137 6203.32
388 82.8008 6609.69
389 80.2456 7243.11
390 77.6691 7868.18
391 75.059 8409.37
392 72.4444 8770.91
393 69.889 9123
394 67.3891 9726.37
395 64.9092 10533.1
396 62.449 10876.2
397 60.006 10686.3
398 57.606 10357
399 55.2767 9938.64
400 53.0145 9433.22
401 50.7868 8896.33
402 48.581 8634.28
403 46.4189 8698.11
404 44.3031 8840.73
405 42.2375 8833.26
406 40.2273 8726.52
407 38.2721 8607.14
408 36.3855 8449.8
409 34.5648 8343.22
410 32.8088 8334.71
411 31.0978 8226.37
412 29.4095 7798.63
413 27.7617 7187.13
414 26.1538 6973.54
415 24.6108 7240.64
416 23.1211 7661.24
417 21.6577 8004.98
418 20.237 8433.32
419 18.8709 9012.46
420 17.57 9429.65
421 16.3306 9509.81
422 15.1428 9421.25
423 13.9942 9405.43
424 12.8928 9478.66
425 11.837 9530.74
426 10.8323 9548.98
427 9.88763 9552.49
428 8.99399 9483.55
429 8.1242 9405.81
430 7.2898 9492.06
431 6.51456 9765.15
432 5.80287 9996.22
433 5.14662 9887.11
434 4.5243 9551.61
435 3.93801 9254.68
436 3.40371 8961.15
437 2.91193 8378.6
438 2.4483 7819.07
439 2.01826 7649.43
440 1.63363 7745.02
441 1.29812 7860
442 1.00485 7939.93
443 0.741844 8024.7
444 0.515951 8110.57
445 0.329747 8151.66
446 0.179453 8272.08
447 0.073617 8535.67
448 0.018252 8665.32
449 0 8566.76
450 0.066215 8484.74
451 0.171112 8615.27
452 0.316819 8951.1
453 0.498586 9280.12
454 0.715024 9613.75
455 0.97621 10084.6
456 1.2883 10624.4
457 1.63867 10886
458 2.02093 10787.3
459 2.43243 10515.7
460 2.87705 10317
461 3.36461 10188.2
462 3.8875 10107.5
463 4.44299 10058.3
464 5.03967 10128.3
465 5.67946 10279.2
466 6.35611 10368
467 7.05754 10397.3
468 7.7809 10422.5
469 8.53069 10496.4
470 9.32235 10721.6
471 10.1506 11145.6
472 11.013 11569.2
473 11.9097 12015.8
474 12.842 12514.9
475 13.8065 12892
476 14.7986 12964.3
477 15.8226 12892.5
478 16.8842 12869.7
479 17.9785 12904.7
480 19.1005 12974.2
481 20.2442 13055.2
482 21.4129 13145.5
483 22.6127 13406.1
484 23.8375 13789.8
485 25.0839 13974.4
486 26.3506 14102
487 27.6347 14397.5
488 28.936 14832.5
489 30.2719 15269.6
490 31.6607 15730.9
491 33.0885 16128.3
492 34.5314 16138.4
493 35.9861 15870.9
494 37.4602 15687
495 38.9614 15666
496 40.4966 15642.7
497 42.0607 15570.9
498 43.6394 15503.3
499 45.2335 15452.3
500 46.8483 15386.8
501 48.4878 15105.5
502 50.152 14678
503 51.8308 14434.2
504 53.5259 14364.4
505 55.2375 14356.1
506 56.9713 14236.2
507 58.7226 14093.1
508 60.4832 13891.4
509 62.2413 13598.9
510 64.007 13513.1
511 65.7803 13694.1
512 67.5656 13886.4
513 69.3593 13987.5
514 71.1599 14073.4
515 72.9585 14208.2
516 74.7583 14286.5
517 76.556 14322
518 78.3522 14312
519 80.1504 14427.3
520 81.9521 14687.4
521 83.7547 14818.9
522 85.5546 14816.3
523 87.3472 14750.8
524 89.1313 14682.4
525 90.9046 14642.8
526 92.6711 14661.6
527 94.4368 14728.2
528 96.2018 14709.3
529 97.9579 14537.4
530 99.6993 14323.4
531 101.428 14149.4
532 103.143 13975.5
533 104.844 13769.3
534 106.527 13652.9
535 108.191 13573.9
536 109.842 13526.9
537 111.478 13466.2
538 113.09 13316.7
539 114.669 13212.9
540 116.219 13210.8
541 117.74 13258
542 119.238 13319.1
543 120.709 13443.1
544 122.148 13533.1
545 123.547 13525.3
546 124.909 13536
547 126.234 13699.2
548 127.523 14000.9
549 128.772 14235.3
550 129.979 14383.4
551 131.149 14674.1
552 132.282 14953.1
553 133.374 14981
554 134.416 14929.8
555 135.41 14898.1
556 136.359 14954.7
557 137.266 14988.7
558 138.126 14932.4
559 138.939 14798
560 139.7 14617.8
561 140.403 14300.7
562 141.05 13873.7
563 141.639 13581.8
564 142.175 13342
565 142.646 13062.5
566 143.058 12627.3
567 143.405 12231.8
568 143.683 11767.8
569 143.878 11330.1
570 143.996 10991
571 144 10990.7
572 143.95 11457.4
573 143.839 13420
574 143.662 14602.7
575 143.407 15329.3
576 143.091 15622.4
577 142.687 15098.6
578 142.183 14170.6
579 141.6 13026.4
580 140.93 12231.2
581 140.172 11669.8
582 139.341 11416.2
583 138.434 11030.2
584 137.43 10372.5
585 136.346 9651.43
586 135.19 9073.28
587 133.945 8552.75
588 132.611 7961.3
589 131.196 7503.35
590 129.659 7265.97
591 128.044 7476.43
592 126.37 8425.79
593 124.599 8998.29
594 122.758 9058.83
595 120.876 8750.14
596 119.005 7922.02
597 117.1 6829.66
598 115.16 5739.27
599 113.195 4938.02
600 111.124 4556.92
601 108.956 4009.97
602 106.734 3076.65
603 104.501 2809.43
604 102.236 3435.44
605 99.8892 4114.62
606 97.4932 4774.08
607 95.0781 5494.42
608 92.6506 6051.92
609 90.2226 6267.32
610 87.773 6215.52
611 85.3137 6104.6
612 82.8008 6203.32
613 80.2456 6609.69
614 77.6691 7243.11
615 75.059 7868.18
616 72.4444 8409.37
617 69.889 8770.91
618 67.3891 9123
619 64.9092 9726.37
620 62.449 10533.1
621 60.006 10876.2
622 57.606 10686.3
623 55.2767 10357
624 53.0145 9938.64
625 50.7868 9433.22
626 48.581 8896.33
627 46.4189 8634.28
628 44.3031 8698.11
629 42.2375 8840.73
630 40.2273 8833.26
631 38.2721 8726.52
632 36.3855 8607.14
633 34.5648 8449.8
634 32.8088 8343.22
635 31.0978 8334.71
636 29.4095 8226.37
637 27.7617 7798.63
638 26.1538 7187.13
639 24.6108 6973.54
640 23.1211 7240.64
641 21.6577 7661.24
642 20.237 8004.98
643 18.8709 8433.32
644 17.57 9012.46
645 16.3306 9429.65
646 15.1428 9509.81
647 13.9942 9421.25
648 12.8928 9405.43
649 11.837 9478.66
650 10.8323 9530.74
651 9.88763 9548.98
652 8.99399 9552.49
653 8.1242 9483.55
654 7.2898 9405.81
655 6.51456 9492.06
656 5.80287 9765.15
657 5.14662 9996.22
658 4.5243 9887.11
659 3.93801 9551.61
660 3.40371 9254.68
661 2.91193 8961.15
662 2.4483 8378.6
663 2.01826 7819.07
664 1.63363 7649.43
665 1.29812 7745.02
666 1.00485 7860
667 0.741844 7939.93
668 0.515951 8024.7
669 0.329747 8110.57
670 0.179453 8151.66
671 0.073617 8272.08
672 0.018252 8535.67
673 0 8665.32

32
mallet.json Normal file
View File

@@ -0,0 +1,32 @@
{
"wellName": "Mallet",
"deltaT": 0.033333333333,
"pumpDiameter": 1.5,
"fluidGradient": 0.45,
"tubingID": 1.995,
"tubingOD": 2.375,
"tubingAnchorDepth": 0.0,
"structuralRating": 320000.0,
"stuffingBoxFriction": 100.0,
"tubingHeadPressure": 40.0,
"tapers": [
{
"length": 1475.0,
"diameter": 1.0,
"material": "steel",
"dampingFactor": 0.8
},
{
"length": 1525.0,
"diameter": 0.875,
"material": "steel",
"dampingFactor": 0.8
},
{
"length": 2000.0,
"diameter": 0.750,
"material": "steel",
"dampingFactor": 0.8
}
]
}

View File

@@ -2,6 +2,8 @@ package com.henrypump.poc;
import java.io.*;
import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.Map;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
@@ -22,55 +24,62 @@ public class WebServer{
this.attachedPOC = attachedPOC;
this.port = port;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
server.createContext("/cmd/start", new StartHandler());
server.createContext("/cmd/stop", new StopHandler());
server.createContext("/sts", new StatusHandler());
server.createContext("/cmd/updateconfig", new UpdateConfigHandler());
server.createContext("/command", new CommandHandler());
server.createContext("/config", new ConfigHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
class StartHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.start("webserver");
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
public static Map<String, String> queryToMap(String query){
Map<String, String> result = new HashMap<String, String>();
for (String param : query.split("&")) {
String pair[] = param.split("=");
if (pair.length>1) {
result.put(pair[0], pair[1]);
}else{
result.put(pair[0], "");
}
}
return result;
}
class StopHandler implements HttpHandler {
class CommandHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.stop("webserver");
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
class StatusHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
class UpdateConfigHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.getWellSetup();
JSONObject respJSON = new JSONObject();
respJSON.put("status", "OK");
Map<String, String> params = queryToMap(t.getRequestURI().getQuery());
for(Map.Entry<String, String> param_map : params.entrySet()){
String key = param_map.getKey();
String param = param_map.getValue();
switch (key){
case "start":
if(param.equals("true")) {
attachedPOC.thisWell.start("web");
respJSON.put("startCommand", "true");
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
} else {
respJSON.put("startCommand", "invalid value - " + param);
}
break;
case "stop":
if(param.equals("true")) {
attachedPOC.thisWell.stop("web");
respJSON.put("stopCommand", "true");
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
} else {
respJSON.put("stopCommand", "invalid value - " + param);
}
break;
default:
respJSON.put(key, "not implemented");
}
}
String response = respJSON.toJSONString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
@@ -80,6 +89,100 @@ public class WebServer{
}
class ConfigHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
JSONObject respJSON = new JSONObject();
Map<String, String> params = queryToMap(t.getRequestURI().getQuery());
for(Map.Entry<String, String> param_map : params.entrySet()){
String key = param_map.getKey();
String param = param_map.getValue();
switch (key){
case "update":
if(param.equals("true")) {
attachedPOC.thisWell.getWellSetup();
respJSON.put("configUpdated", "true");
} else {
respJSON.put("configUpdated", "invalid value - " + param);
}
break;
case "fluidOilRatio":
try {
double newSetpoint = Double.parseDouble(param);
attachedPOC.thisWell.setFluidOilRatio(newSetpoint);
respJSON.put("fluidOilRatio", attachedPOC.thisWell.getFluidOilRatio());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("fluidOilRatio", "invalid value - " + param);
}
break;
case "fluidWaterRatio":
try {
double newSetpoint = Double.parseDouble(param);
attachedPOC.thisWell.setFluidWaterRatio(newSetpoint);
respJSON.put("fluidWaterRatio", attachedPOC.thisWell.getFluidWaterRatio());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("fluidWaterRatio", "invalid value - " + param);
}
break;
case "fluidGasMCFRatio":
try {
double newSetpoint = Double.parseDouble(param);
attachedPOC.thisWell.setFluidGasRatio(newSetpoint);
respJSON.put("fluidGasMCFRatio", attachedPOC.thisWell.getFluidGasRatio());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("fluidGasMCFRatio", "invalid value - " + param);
}
break;
case "pumpOffSetpoint":
try {
double newSetpoint = Double.parseDouble(param);
attachedPOC.thisWell.setPumpOffFillPercentSetpoint(newSetpoint);
respJSON.put("pumpOffSetpoint", attachedPOC.thisWell.getPumpOffFillPercentSetpoint());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("pumpOffSetpoint", "invalid value - " + param);
}
break;
case "pumpOffStrokes":
try {
int newSetpoint = Integer.parseInt(param);
attachedPOC.thisWell.setPumpOffStrokes(newSetpoint);
respJSON.put("pumpOffStrokes", attachedPOC.thisWell.getPumpOffStrokes());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("pumpOffStrokes", "invalid value - " + param);
}
break;
case "pumpOffDowntime":
try {
long newSetpoint = Long.parseLong(param);
attachedPOC.thisWell.setPumpOffDowntimeMinutes(newSetpoint);
respJSON.put("pumpOffDowntime", attachedPOC.thisWell.getPumpOffDowntimeMinutes());
} catch (NullPointerException | NumberFormatException e) {
respJSON.put("pumpOffDowntime", "invalid value - " + param);
}
break;
default:
respJSON.put(key, "not implemented");
break;
}
}
String response = respJSON.toJSONString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}

View File

@@ -450,6 +450,18 @@ public class Well {
return direction;
}
public void setFluidOilRatio(double fluidOilRatio) {
this.fluidOilRatio = fluidOilRatio;
}
public void setFluidWaterRatio(double fluidWaterRatio) {
this.fluidWaterRatio = fluidWaterRatio;
}
public void setFluidGasRatio(double fluidGasRatio) {
this.fluidGasRatio = fluidGasRatio;
}
public double getFluidOilRatio() {
return fluidOilRatio;
}
@@ -609,7 +621,7 @@ public class Well {
try {
Object obj = parser.parse(new FileReader(jsonFilename));
System.out.println("Reading well configuration from JSON file 'wellSetup.json");
System.out.println("Reading well configuration from JSON file 'wellSetup.json'");
JSONObject well = (JSONObject) obj;
Object newWellName = well.get("wellName");
@@ -663,7 +675,12 @@ public class Well {
Path fromFile = Paths.get(jsonFilename);
Path toFile = Paths.get(jsonFilename + ".bak");
Files.move(fromFile, toFile);
try {
Files.move(fromFile, toFile);
} catch (FileAlreadyExistsException e) {
Files.delete(toFile);
Files.move(fromFile, toFile);
}
} catch (FileNotFoundException e) {
System.out.println("No configuration file found. Pulling latest value from database.");

View File

@@ -117,4 +117,34 @@ def json_runstatusnow(request):
@view_config(route_name="json_updateconfig", renderer="prettyjson", request_method='POST')
def json_updateconfig(request):
return {'POST': request.json_body}
conv_to_float = [
'deltaT',
'pumpDiameter',
'fluidGradient',
'tubingID',
'tubingOD',
'tubingAnchorDepth',
'structuralRating',
'stuffingBoxFriction',
'tubingHeadPressure'
]
t_conv_to_float = ['length', 'diameter', 'dampingFactor']
jsb = request.json_body
new_config = {}
new_config['timestamp'] = datetime.now()
new_config['storedBy'] = "web"
new_config['wellName'] = jsb['wellName']
new_config['tapers'] = []
for p in conv_to_float:
new_config[p] = float(jsb[p])
for t_i in range(0, len(jsb['tapers'])):
t = {}
for p in t_conv_to_float:
t[p] = float(jsb['tapers'][t_i][p])
t['material'] = jsb['tapers'][t_i]['material']
new_config['tapers'].append(t)
result = request.db['wellConfiguration'].insert(new_config)
return {'new_config': request.json_body, 'stored_result': result}