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:
181
.idea/workspace.xml
generated
181
.idea/workspace.xml
generated
@@ -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>
|
||||
|
||||
42
README.md
42
README.md
@@ -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
673
mallet.csv
Normal 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
|
||||
|
32
mallet.json
Normal file
32
mallet.json
Normal 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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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.");
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user