From 2a13a25f0604c57675e2391eab945193ec5fdd46 Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Tue, 7 Feb 2017 19:02:10 -0600 Subject: [PATCH] Stores well test and gets latest kFactor --- .../3.1/taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .gradle/3.1/taskArtifacts/fileHashes.bin | Bin 20647 -> 21347 bytes .gradle/3.1/taskArtifacts/fileSnapshots.bin | Bin 36821 -> 87500 bytes .gradle/3.1/taskArtifacts/taskArtifacts.bin | Bin 25135 -> 32263 bytes .gradletasknamecache | 79 ++ .idea/workspace.xml | 795 ++++++++++++------ wellSetup.json => barneyWell.json | 0 build.gradle | 7 +- kiesha7265Well.json | 31 + kiesha7265_card_147_surface.csv | 72 ++ kiesha7265_card_3_surface.csv | 71 ++ poc-java.iml | 2 +- src/main/java/com/henrypump/poc/Database.java | 89 +- src/main/java/com/henrypump/poc/POC.java | 19 +- src/main/java/com/henrypump/poc/Well.java | 237 ++++-- src/main/java/com/henrypump/poc/WellTest.java | 78 ++ 16 files changed, 1125 insertions(+), 355 deletions(-) create mode 100644 .gradletasknamecache rename wellSetup.json => barneyWell.json (100%) create mode 100644 kiesha7265Well.json create mode 100644 kiesha7265_card_147_surface.csv create mode 100644 kiesha7265_card_3_surface.csv create mode 100644 src/main/java/com/henrypump/poc/WellTest.java diff --git a/.gradle/3.1/taskArtifacts/cache.properties.lock b/.gradle/3.1/taskArtifacts/cache.properties.lock index 234623ab08701d12d89d11bf0695f9e451ba7fe1..7baecfd1d4338c63e3a58b7e062c3a74e6638996 100644 GIT binary patch literal 17 VcmZSH5z6?C`_*(81~6ca0st?&1SbFh literal 17 UcmZSH5z6?C`_*(81_;Oi0587;FaQ7m diff --git a/.gradle/3.1/taskArtifacts/fileHashes.bin b/.gradle/3.1/taskArtifacts/fileHashes.bin index 0b7885d669fe3d849967e71de90094e20bee0ded..4fc2fd0c443824805bb70f02dd225129cbfbffaa 100644 GIT binary patch delta 1520 zcmZ3!kn!;{#tkMCjFyv4B~}Q`FG+d0r(%;I0~iEyPrfRlAh4o9c5YY!G-N zxqWML(~OT0!Jz+>?@G=PVA6Q}#>HjF4TxZ{;pAK?1p)S&eWpQuWl+0<&Q5NXvT)#; z@weI|B)}G`eKyQ42?zI_hdo`Fq2ie^ap|4cp2jX^%z%goET6npYJ-69`*R;IpWkl+ zRm?g$R$4*8-$DJ7nc~+bsG#}eQt1;ab%lWuAC`Y(hX@8Pgc%E?85meIH!A)R-)OKw zXtSe70<%I??50^Vr{h^p?>!K7U!wgU0|R4}w7K;PhzU~XHy`v?V6>AAerW&^;n@$Q z^^AdpCJ-xvu)vymmvwTNCKjyeG~5bX@ok0yKjLG_pVLG>?(F>b;b-2PB0TNoqXUrOP1)u#`3;(>oR);;+z zW_fcvs?nk+Ca?5Y;{iDh0=Rf4FZ2)&JZRiEZ`U$DzPlSgeSYDXhN`K2IZ!QHFg?yO z6}u9_H1Ub*4Ts;yoPl8o3~IQk3~iI`1Jvq~1SBzynDcf*CDV+#bLN-N_K@)R4TBi5 z^99&p8UgDubu8a${BBQj&;;|8EU&HQ&Rc;xBELP7ya3k0z|@MSqaGNYH(x3Rt~XZl zWqq)IlF_ZwpCC&lcYAR_wWOkH0qR&O|M#wX_U_ZS?lvA)pS;N*RR>rfT38779B;H! z{JJZ5`fJ`ef9*{W9ljsxA(k*OVp?K;(}(@$eW!=d&mYfEDQesR(*o6Dg{gyWrGj(w z*>DxvpOQ1XF6lNxbRd34&O$qLQ{Eor+^vWqSMYE$&wQz-EYUwO4xLTRD z<;z2-?Hh$U&xE7uV9CeSG3%#(8vAq4QyV;&{&Z9m`HQRr=zmUqOf4eQ_iz7X%wfI4 zdar_{wb_4UEes4IEtonQ7tD09n6D-xlzPkchJ`dRIf5b)?)R&hI>Il+Slid{(mn6~ zG&;_&M8XkO3u70ime4KU(#qnOB{=eXwYw@sML;^FP53o{DuIA~29Q9D_usxVzxbVu Y{5(I)YIc+H>_V^(cpl(zV*zOa0Du~(x&QzG delta 576 zcmaF7jB)uw#tkMCjM|e;C00!SDj_jhRWf1nTuF(^PbDiRmr6~TEGsQB*;m?N@=@s( zlUrpZCU2EF!1Esp7#LV2H!A)RUuYn*+0i3`S>a^0_@d`Cq&nWdFX@fu+|9$lz!)X^ z&SC-s7zj++e9&8g(N6R&{|1N%&we1SXAC4XfmjiQ1y)@+#O~v@!IyElvx>}2Ej5rC zY$CIuW(a#vmiKj0@Z3@P)_ulS>D1@^%NwsbK`grR250~X%vd+M*;kE4j9H*z@>*X# z2;)ACA?PQiP^6*P%RaCAQs?K!kZ;TSL_n5+l!LW12;7?N?FZFg>Ic=o9LBf_V{rRJ zrEFo0e19ng&KqVDh6SgR@_v7{=sV-P5Y6ZnlUMqy)g$cU0=gYN2x2lh7>*b&33|LX zP-FGEo*Ae{6ggw+V9U9+zi{HR0w=k2wmos;(@}LWfC3LWm?!%Mh&v(Nz#xex4~&L~ blI{U>*NEN=d?wr}Wb`T%#Y7F~Sdb0?YGaf9 diff --git a/.gradle/3.1/taskArtifacts/fileSnapshots.bin b/.gradle/3.1/taskArtifacts/fileSnapshots.bin index 356c0bba8425aa5bff8dd016f1ecad284f80b112..5d192c83d7cde7af2e8c8657af6cbd7608e252a5 100644 GIT binary patch delta 6202 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 delta 792 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 diff --git a/.gradletasknamecache b/.gradletasknamecache new file mode 100644 index 0000000..8dba709 --- /dev/null +++ b/.gradletasknamecache @@ -0,0 +1,79 @@ +assemble +build +buildDependents +buildNeeded +classes +compileJava +processResources +clean +jar +testClasses +compileTestJava +processTestResources +init +wrapper +javadoc +buildEnvironment +components +dependencies +dependencyInsight +help +model +projects +properties +tasks +cleanIdea +cleanIdeaModule +cleanIdeaProject +idea +ideaModule +ideaProject +ideaWorkspace +check +test +cleanIdeaWorkspace +deploy +fatJar +install +runRemote +Pattern: +Pattern: +Pattern: +assemble +build +buildDependents +buildNeeded +classes +compileJava +processResources +clean +jar +testClasses +compileTestJava +processTestResources +init +wrapper +javadoc +buildEnvironment +components +dependencies +dependencyInsight +help +model +projects +properties +tasks +cleanIdea +cleanIdeaModule +cleanIdeaProject +idea +ideaModule +ideaProject +ideaWorkspace +check +test +cleanIdeaWorkspace +deploy +fatJar +install +runRemote diff --git a/.idea/workspace.xml b/.idea/workspace.xml index ba583f5..6287e4d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,17 +2,18 @@ - - - - - - + + + + + + + + - - - + + + + + @@ -531,37 +561,37 @@ - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + + - - - - - - + + + + + + - - + @@ -583,33 +613,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -618,7 +665,15 @@ - + + + + + + + + + @@ -628,12 +683,12 @@ - - - - - - + + + + + + @@ -661,33 +716,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -697,33 +769,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -855,7 +944,7 @@ - + @@ -872,16 +961,6 @@ - - - - - - - - - - @@ -890,73 +969,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -965,13 +977,238 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + poc-java + + + + + + + + Maven: com.googlecode.json-simple:json-simple:1.1.1 + + + + + + \ No newline at end of file diff --git a/wellSetup.json b/barneyWell.json similarity index 100% rename from wellSetup.json rename to barneyWell.json diff --git a/build.gradle b/build.gradle index c816908..4fc34d0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'java' apply plugin: 'maven' +apply plugin: 'idea' group = 'com.henrypump.poc' @@ -43,9 +44,9 @@ remotes { //create a single Jar with all dependencies task fatJar(type: Jar) { manifest { - attributes 'Implementation-Title': 'Gradle Jar File Example', + attributes 'Implementation-Title': 'POC Jar File', 'Implementation-Version': version, - 'Main-Class': 'com.mkyong.DateUtils' + 'Main-Class': 'com.henrypump.poc.POC' } baseName = project.name + '-all' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } @@ -63,7 +64,7 @@ task deploy << { task runRemote << { ssh.run { session(remotes.edison) { - execute 'java -cp .:/usr/lib/java/*:poc-java-all-1.0-SNAPSHOT.jar com.henrypump.poc.POC viceroyWell.json card_72599_surface.csv' + execute 'java -cp .:/usr/lib/java/*:poc-java-all-1.0-SNAPSHOT.jar com.henrypump.poc.POC kiesha7265Well.json kiesha7265_card_147_surface.csv' } } } \ No newline at end of file diff --git a/kiesha7265Well.json b/kiesha7265Well.json new file mode 100644 index 0000000..d10fbd6 --- /dev/null +++ b/kiesha7265Well.json @@ -0,0 +1,31 @@ +{ + "deltaT": 0.1, + "pumpDiameter": 2.0, + "fluidGradient": 0.45, + "tubingID": 2.441, + "tubingOD": 2.875, + "tubingAnchorDepth": 5963.0, + "structuralRating": 320000.0, + "stuffingBoxFriction": 100.0, + "tubingHeadPressure": 100.0, + "tapers": [ + { + "length": 4097.0, + "diameter": 1.225, + "material": "fiberglass", + "dampingFactor": 0.8 + }, + { + "length": 1550.0, + "diameter": 1.0, + "material": "steel", + "dampingFactor": 0.8 + }, + { + "length": 250.0, + "diameter": 1.5, + "material": "steel", + "dampingFactor": 0.8 + } + ] +} diff --git a/kiesha7265_card_147_surface.csv b/kiesha7265_card_147_surface.csv new file mode 100644 index 0000000..1e0fbbe --- /dev/null +++ b/kiesha7265_card_147_surface.csv @@ -0,0 +1,72 @@ +108.61,5568.25 +105.89,5513.06 +103.39,5434.58 +100.19,5293.22 +97,5167.38 +93.23,5048.32 +89.59,4983.5 +85.37,4931.5 +81.26,4880.43 +76.69,4835.59 +71.99,4831.69 +66.99,4830.27 +61.54,4882.61 +56.15,4948.93 +50.87,5011.63 +45.22,5069.05 +39.76,5143.23 +34.34,5191.4 +29.14,5219.3 +24.14,5202.72 +19.01,5058.44 +15.06,4815.65 +11.41,4658.12 +8.19,4573.74 +5.29,4535.83 +3.33,4512.9 +2.01,4517.67 +1.43,4533.9 +1.43,4639.57 +1.82,4847.4 +2.82,5032.86 +4.93,5180.57 +7.1,5294.55 +9.51,5371.81 +12.18,5503.77 +15.85,5724.93 +19.83,5995.5 +24.05,6268.74 +28.64,6516.94 +32.95,6699.54 +37.7,6823.33 +42.63,6966.71 +48.11,7056.78 +53.1,7075.33 +58.13,6976.73 +63.06,6838.9 +68.49,6633.76 +73.6,6459.24 +78.99,6251.46 +83.75,5989.22 +88.35,5712.01 +93.03,5423.94 +97.34,5218.33 +101.14,5082.52 +104.61,4993.43 +107.9,4934.21 +110.81,4865.85 +113.08,4871.49 +114.92,4941.21 +116.56,5049.92 +117.64,5164.69 +118.34,5255.13 +118.37,5277.04 +118.42,5281.13 +118,5298.63 +117.13,5503.39 +115.98,5618.52 +114.41,5666.09 +112.48,5647.89 +110.44,5618.84 +108.28,5572.79 +108.61,5568.25 \ No newline at end of file diff --git a/kiesha7265_card_3_surface.csv b/kiesha7265_card_3_surface.csv new file mode 100644 index 0000000..c9b93ea --- /dev/null +++ b/kiesha7265_card_3_surface.csv @@ -0,0 +1,71 @@ +106.56,5559.16 +103.69,5476.74 +100.91,5347.85 +97.7,5202.76 +94.04,5081.64 +90.16,4969.94 +86.1,4907.14 +81.93,4857.86 +77.56,4848.6 +73.5,4836.39 +68.53,4840.4 +63.35,4882.71 +57.48,4962.65 +52.21,5048 +46.41,5112.74 +41.07,5174.13 +35.3,5239.02 +30.07,5266.9 +24.81,5229.27 +20.09,5038.89 +15.87,4771.81 +12.18,4605.68 +8.96,4507.07 +6.12,4457.05 +3.98,4431.96 +2.35,4423.11 +1.21,4416.8 +1.24,4555.69 +1.46,4774.43 +2.41,4975.61 +4.3,5141.43 +6.46,5271.44 +8.87,5371.92 +11.87,5480.33 +15.38,5622.74 +18.95,5886.1 +23.29,6185.17 +27.42,6498.76 +32.06,6699.7 +36.8,6844.66 +41.54,6979.34 +46.22,7073 +51.75,7119.29 +57.21,7094.23 +62.41,6933.75 +67.48,6728.46 +72.67,6509.91 +77.51,6254.98 +82.08,6006.73 +87.12,5749.58 +92.03,5454.61 +96.37,5194.45 +100.34,5008.54 +104.03,4899.88 +107.43,4841.2 +109.94,4824.88 +112.65,4809.43 +114.67,4838.17 +116.34,4928.36 +117.31,5077.75 +117.73,5192.38 +118.43,5257 +118.63,5265.33 +118.38,5320.02 +117.54,5469.46 +116.15,5617.94 +114.93,5682.86 +113.03,5696.01 +111.28,5676.49 +109.07,5614.65 +106.56,5559.16 \ No newline at end of file diff --git a/poc-java.iml b/poc-java.iml index cbe8276..35d2624 100644 --- a/poc-java.iml +++ b/poc-java.iml @@ -1,6 +1,6 @@ - + diff --git a/src/main/java/com/henrypump/poc/Database.java b/src/main/java/com/henrypump/poc/Database.java index 464ddaf..c5d39d5 100644 --- a/src/main/java/com/henrypump/poc/Database.java +++ b/src/main/java/com/henrypump/poc/Database.java @@ -14,6 +14,7 @@ import org.bson.Document; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.time.Instant; import java.util.Arrays; import com.mongodb.client.MongoCursor; @@ -82,22 +83,21 @@ public class Database { } public long newMeasurement(Measurement inpMeasurement){ -// String df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date()); -// MongoCollection collection = database.getCollection("wellData"); -// Document doc = new Document("tagname", inpMeasurement.getTagName()) -//// .append("currentValue", inpMeasurement.getCurrentValue()) -//// .append("maxDailyValue", inpMeasurement.getDailyMax()) -//// .append("minDailyValue", inpMeasurement.getDailyMin()) -//// .append("dailyAverage", inpMeasurement.getAverage()) -//// .append("dailyTotal", inpMeasurement.getTotal()) -// .append("timestamp", df); -// collection.insertOne(doc); -// return collection.count(); - return 1; + String df = Date.from(Instant.now()).toString(); + MongoCollection collection = database.getCollection("wellData"); + Document doc = new Document("tagname", inpMeasurement.getTagName()) + .append("currentValue", inpMeasurement.getCurrentValue()) + .append("maxDailyValue", inpMeasurement.getDailyMax()) + .append("minDailyValue", inpMeasurement.getDailyMin()) + .append("dailyAverage", inpMeasurement.getAverage()) + .append("dailyTotal", inpMeasurement.getTotal()) + .append("timestamp", df); + collection.insertOne(doc); + return collection.count(); } public long newDailyTotal(Measurement inpMeasurement){ - String df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date()); + String df = Date.from(Instant.now()).toString(); MongoCollection collection = database.getCollection("gaugeOffData"); Document doc = new Document("tagname", inpMeasurement.getTagName()) .append("currentValue", inpMeasurement.getCurrentValue()) @@ -111,4 +111,67 @@ public class Database { } + public double getPreviousDailyTotal(Date inpDateTime){ + String isoInpDateTime = inpDateTime.toString(); + MongoCollection wellTestCollection = database.getCollection("gaugeOffData"); + MongoCursor cursor = wellTestCollection.find(and(eq("tagname", "Fluid Produced"), lte("timestamp", isoInpDateTime))) + .sort(Sorts.descending("timestamp")).limit(1).iterator(); + double lastTotal = -1.0; + try { + while (cursor.hasNext()) { + lastTotal = cursor.next().getDouble("dailyTotal"); + } + } finally { + cursor.close(); + } + return lastTotal; + }; + + public long newWellTest(WellTest inp){ + String df = Date.from(Instant.now()).toString(); + MongoCollection collection = database.getCollection("wellTestData"); + Document doc = new Document("testStartTime", df) + .append("testHours", inp.getTestHours()) + .append("testTotalBBL", inp.getTotalFluidBBL()) + .append("testOilBBL", inp.getTestOilBBL()) + .append("testWaterBBL", inp.getTestWaterBBL()) + .append("testGasMCF", inp.getTestGasMCF()) + .append("kFactor", inp.getkFactor()) + .append("oilRatio", inp.getOilRatio()) + .append("waterRatio", inp.getWaterRatio()) + .append("gasMCFRatio", inp.getGasMCFRatio()); + collection.insertOne(doc); + return collection.count(); + } + + public Document getPreviousWellTest(Date inpDateTime){ + String isoInpDateTime = inpDateTime.toString(); + MongoCollection wellTestCollection = database.getCollection("wellTestData"); + MongoCursor cursor = wellTestCollection.find(lte("testStartTime", isoInpDateTime)) + .sort(Sorts.descending("testStartTime")).limit(1).iterator(); + Document lastTest = new Document("kFactor", (Double) 1.0); + try { + while (cursor.hasNext()) { + lastTest = cursor.next(); + } + } finally { + cursor.close(); + } + return lastTest; + }; + + public double getLatestKFactor(){ + MongoCollection wellTestCollection = database.getCollection("wellTestData"); + MongoCursor cursor = wellTestCollection.find().sort(Sorts.descending("testStartTime")).limit(1).iterator(); + double kFactor = 1.0; + try { + while (cursor.hasNext()) { + kFactor = cursor.next().getDouble("kFactor"); + } + } finally { + cursor.close(); + } + return kFactor; + } + } diff --git a/src/main/java/com/henrypump/poc/POC.java b/src/main/java/com/henrypump/poc/POC.java index 683d578..078c5ea 100644 --- a/src/main/java/com/henrypump/poc/POC.java +++ b/src/main/java/com/henrypump/poc/POC.java @@ -7,6 +7,8 @@ package com.henrypump.poc; */ import java.awt.*; import java.awt.event.*; +import java.time.Instant; +import java.util.Date; public class POC implements Runnable{ protected Well thisWell; @@ -91,8 +93,9 @@ public class POC implements Runnable{ public void run(){ int loopCounter = 0, loopLimit = simLoops, led2out, led3out, led4out,led5out; double pos; + boolean newWellTest = true; long sleepMilliseconds = (long) (thisWell.getDt() * 1000); - thisWell.setupFluidRatio(0.25, 0.75, 1.12); + thisWell.setupFluidRatio(0.50, 0.50, 1.12); thisWell.checkSafeties(); while (true) { while (loopCounter < loopLimit && (thisWell.getRunStatus() == Well.RUNSTATUS_RUNNING || thisWell.getRunStatus() == Well.RUNSTATUS_STARTING)) { @@ -123,6 +126,20 @@ public class POC implements Runnable{ loopCounter++; } + if (newWellTest){ + System.out.println("Previous kFactor = " + thisWell.db.getLatestKFactor()); + Date nowDate = Date.from(Instant.now()); + thisWell.wellTest = new WellTest(nowDate, 24.0, .35, .20, .15, 1.25, thisWell); + thisWell.db.newWellTest(thisWell.wellTest); + System.out.println("Well Test @ " + nowDate.toString()); + System.out.println("kFactor: " + thisWell.wellTest.getkFactor()); + System.out.println("oilRatio: " + thisWell.wellTest.getOilRatio()); + System.out.println("waterRatio: " + thisWell.wellTest.getWaterRatio()); + System.out.println("gasRatio: " + thisWell.wellTest.getGasMCFRatio()); + newWellTest = false; + System.out.println("Last kFactor = " + thisWell.db.getLatestKFactor()); + } + if (startBtn.read() == 1) thisWell.start("startbutton"); if (stopBtn.read() == 1) thisWell.stop("stopbutton"); diff --git a/src/main/java/com/henrypump/poc/Well.java b/src/main/java/com/henrypump/poc/Well.java index 020a9b4..6c77a35 100644 --- a/src/main/java/com/henrypump/poc/Well.java +++ b/src/main/java/com/henrypump/poc/Well.java @@ -18,6 +18,7 @@ import static java.lang.Math.sqrt; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.time.LocalDate; /** * Created by patrickjmcd on 1/31/17. @@ -26,6 +27,7 @@ public class Well { private String wellName; protected Simulation sim; protected Database db; + protected WellTest wellTest; /* IO */ AnalogIn inclinometer; @@ -138,25 +140,35 @@ public class Well { private double fluidWaterRatio; // BBL of water per 1 BBL fluid private double fluidGasRatio; // MCF of gas per 1 BBL fluid + // DATE & TIME PARAMETERS + private LocalDate lastCheckedDate = null; + + private boolean isNewDay(){ + LocalDate today = LocalDate.now(); + boolean ret = lastCheckedDate == null || today.isAfter(lastCheckedDate); + lastCheckedDate = today; + return ret; + } + // Measurements - private Measurement strokeSpeed = new Measurement("Stroke Speed", true, db, 0.5, 600); - private Measurement downholeGrossStroke = new Measurement("Downhole Gross Stroke", true, db, 0.5, 600); - private Measurement downholeNetStroke = new Measurement("Downhole Net Stroke", true, db, 0.5, 600); - private Measurement fluidLevel = new Measurement("Fluid Level", true, db, 10, 600); - private Measurement fluidLoad = new Measurement("Fluid Load", true, db, 20, 600); - private Measurement inflowRate = new Measurement("Inflow Rate", true, db, 0.5, 600); - private Measurement peakPolishedRodLoad = new Measurement("Peak PRL", true, db, 50, 600); - private Measurement minPolishedRodLoad = new Measurement("Min PRL", true, db, 50, 600); - private Measurement percentRun = new Measurement("Percent Run", true, db, 1.0, 600); - private Measurement polishedRodHP = new Measurement("Polished Rod HP", true, db, 0.25, 600); - private Measurement pumpHP = new Measurement("Pump HP", true, db, 0.25, 600); - private Measurement fluidProduced = new Measurement("Fluid Produced", true, db, 1.0, 600); - private Measurement oilProduced = new Measurement("Oil Produced", true, db, 1.0, 600); - private Measurement waterProduced = new Measurement("Water Produced", true, db, 1.0, 600); - private Measurement gasProduced = new Measurement("Gas Produced", true, db, 1.0, 600); - private Measurement pumpIntakePressure = new Measurement("Pump Intake Pressure", true, db, 5.0, 600); - private Measurement surfaceStrokeLength = new Measurement("Surface Stroke", true, db, 0.5, 1800); - private Measurement tubingMovement = new Measurement("Tubing Movement", true, db, 0.5, 600); + private Measurement strokeSpeed; + private Measurement downholeGrossStroke; + private Measurement downholeNetStroke; + private Measurement fluidLevel; + private Measurement fluidLoad; + private Measurement inflowRate; + private Measurement peakPolishedRodLoad; + private Measurement minPolishedRodLoad; + private Measurement percentRun; + private Measurement polishedRodHP; + private Measurement pumpHP; + private Measurement fluidProduced; + private Measurement oilProduced; + private Measurement waterProduced; + private Measurement gasProduced; + private Measurement pumpIntakePressure; + private Measurement surfaceStrokeLength; + private Measurement tubingMovement; Well(String wellName, int inclinometerChannel, int loadCellChannel, int runCommandChannel){ this.wellName = wellName; @@ -166,6 +178,25 @@ public class Well { inclinometer = new AnalogIn(inclinometerChannel, 0, 100, 0, 100); loadCell = new AnalogIn(loadCellChannel, 0, 50000, 0, 50000); runCommand = new DigitalOut(runCommandChannel, 0); + + strokeSpeed = new Measurement("Stroke Speed", true, db, 0.5, 600); + downholeGrossStroke = new Measurement("Downhole Gross Stroke", true, db, 0.5, 600); + downholeNetStroke = new Measurement("Downhole Net Stroke", true, db, 0.5, 600); + fluidLevel = new Measurement("Fluid Level", true, db, 10, 600); + fluidLoad = new Measurement("Fluid Load", true, db, 20, 600); + inflowRate = new Measurement("Inflow Rate", true, db, 0.5, 600); + peakPolishedRodLoad = new Measurement("Peak PRL", true, db, 50, 600); + minPolishedRodLoad = new Measurement("Min PRL", true, db, 50, 600); + percentRun = new Measurement("Percent Run", true, db, 1.0, 600); + polishedRodHP = new Measurement("Polished Rod HP", true, db, 0.25, 600); + pumpHP = new Measurement("Pump HP", true, db, 0.25, 600); + fluidProduced = new Measurement("Fluid Produced", true, db, 1.0, 600); + oilProduced = new Measurement("Oil Produced", true, db, 1.0, 600); + waterProduced = new Measurement("Water Produced", true, db, 1.0, 600); + gasProduced = new Measurement("Gas Produced", true, db, 1.0, 600); + pumpIntakePressure = new Measurement("Pump Intake Pressure", true, db, 5.0, 600); + surfaceStrokeLength = new Measurement("Surface Stroke", true, db, 0.5, 1800); + tubingMovement = new Measurement("Tubing Movement", true, db, 0.5, 600); } Well(String wellName, String simFileName, int inclinometerChannel, int loadCellChannel, int runCommandChannel){ @@ -177,6 +208,25 @@ public class Well { inclinometer = new AnalogIn(inclinometerChannel, 0, 100, 0, 100); loadCell = new AnalogIn(loadCellChannel, 0, 50000, 0, 50000); runCommand = new DigitalOut(runCommandChannel, 0); + + strokeSpeed = new Measurement("Stroke Speed", true, db, 0.5, 600); + downholeGrossStroke = new Measurement("Downhole Gross Stroke", true, db, 0.5, 600); + downholeNetStroke = new Measurement("Downhole Net Stroke", true, db, 0.5, 600); + fluidLevel = new Measurement("Fluid Level", true, db, 10, 600); + fluidLoad = new Measurement("Fluid Load", true, db, 20, 600); + inflowRate = new Measurement("Inflow Rate", true, db, 0.5, 600); + peakPolishedRodLoad = new Measurement("Peak PRL", true, db, 50, 600); + minPolishedRodLoad = new Measurement("Min PRL", true, db, 50, 600); + percentRun = new Measurement("Percent Run", true, db, 1.0, 600); + polishedRodHP = new Measurement("Polished Rod HP", true, db, 0.25, 600); + pumpHP = new Measurement("Pump HP", true, db, 0.25, 600); + fluidProduced = new Measurement("Fluid Produced", true, db, 1.0, 600); + oilProduced = new Measurement("Oil Produced", true, db, 1.0, 600); + waterProduced = new Measurement("Water Produced", true, db, 1.0, 600); + gasProduced = new Measurement("Gas Produced", true, db, 1.0, 600); + pumpIntakePressure = new Measurement("Pump Intake Pressure", true, db, 5.0, 600); + surfaceStrokeLength = new Measurement("Surface Stroke", true, db, 0.5, 1800); + tubingMovement = new Measurement("Tubing Movement", true, db, 0.5, 600); } public double getDt() { @@ -370,6 +420,18 @@ public class Well { return direction; } + public double getFluidOilRatio() { + return fluidOilRatio; + } + + public double getFluidWaterRatio() { + return fluidWaterRatio; + } + + public double getFluidGasRatio() { + return fluidGasRatio; + } + public void setupFluidRatio(double oilRatio, double waterRatio, double gasRatio){ fluidOilRatio = oilRatio; fluidWaterRatio = waterRatio; @@ -571,6 +633,7 @@ public class Well { taperTable.addRow("Rod Depth", rodDepth[i]); taperTable.addRow("Rod Weight in Air", rodWeightAir[i]); taperTable.addRow("Rod Weight in Fluid", rodWeightFluid[i]); + taperTable.addRule(); rend.setTheme(V2_E_TableThemes.UTF_LIGHT.get()); rend.setWidth(new WidthAbsoluteEven(50)); rt = rend.render(taperTable); @@ -820,6 +883,66 @@ public class Well { return downholeValues; }; + public void endOfStroke(){ + currentCard.setNumPointsUsed(pointCounter + 1); + currentCard.calcStrokeData(150, fluidGradient, + rodDepthTotal, tubingAnchorDepth, + tubingCrossSectionalArea, pumpArea, + frictionEstimate, structuralRating, fluidWaterRatio, fluidOilRatio, fluidGasRatio); + for (int j = 98; j >= 0; j--) { + cardStorage[j + 1] = cardStorage[j]; + } + cardStorage[0] = currentCard; + currentCard.printCard("csv", true); + strokesSinceStart++; + strokesToday++; + strokesLifetime++; + + strokeSpeed.update(currentCard.getStrokeSpeed()); + downholeGrossStroke.update(currentCard.getDownholeGrossStrokeLength()); + downholeNetStroke.update(currentCard.getDownholeNetStrokeLength()); + fluidLevel.update(currentCard.getFluidLevel()); + fluidLoad.update(currentCard.getFluidLoad()); + peakPolishedRodLoad.update(currentCard.getSurfaceLoadMax().getLoad()); + minPolishedRodLoad.update(currentCard.getSurfaceLoadMin().getLoad()); + polishedRodHP.update(currentCard.getPolishedRodHorsepower()); + pumpHP.update(currentCard.getPumpHorsepower()); + fluidProduced.update(currentCard.getFluidBBLMoved()); + oilProduced.update(currentCard.getOilBBLMoved()); + waterProduced.update(currentCard.getWaterBBLMoved()); + gasProduced.update(currentCard.getGasMCFMoved()); + pumpIntakePressure.update(currentCard.getPumpIntakePressure()); + surfaceStrokeLength.update(currentCard.getSurfaceStrokeLength()); + tubingMovement.update(currentCard.getTubingMovement()); + + currentCard = new Card(strokesLifetime); + pointCounter = -1; + if (strokesSinceStart > startupStrokes){ + runStatus = RUNSTATUS_RUNNING; + } + if(isNewDay()){ + strokeSpeed.endOfDay(); + downholeGrossStroke.endOfDay(); + downholeNetStroke.endOfDay(); + fluidLevel.endOfDay(); + fluidLoad.endOfDay(); + inflowRate.endOfDay(); + peakPolishedRodLoad.endOfDay(); + minPolishedRodLoad.endOfDay(); + percentRun.endOfDay(); + polishedRodHP.endOfDay(); + pumpHP.endOfDay(); + fluidProduced.endOfDay(); + oilProduced.endOfDay(); + waterProduced.endOfDay(); + gasProduced.endOfDay(); + pumpIntakePressure.endOfDay(); + surfaceStrokeLength.endOfDay(); + tubingMovement.endOfDay(); + } + + } + public void eval(){ checkSafeties(); currentSurfacePosition = inclinometer.readScaled(); @@ -853,6 +976,24 @@ public class Well { strokesSinceStart++; strokesToday++; strokesLifetime++; + + strokeSpeed.update(currentCard.getStrokeSpeed()); + downholeGrossStroke.update(currentCard.getDownholeGrossStrokeLength()); + downholeNetStroke.update(currentCard.getDownholeNetStrokeLength()); + fluidLevel.update(currentCard.getFluidLevel()); + fluidLoad.update(currentCard.getFluidLoad()); + peakPolishedRodLoad.update(currentCard.getSurfaceLoadMax().getLoad()); + minPolishedRodLoad.update(currentCard.getSurfaceLoadMin().getLoad()); + polishedRodHP.update(currentCard.getPolishedRodHorsepower()); + pumpHP.update(currentCard.getPumpHorsepower()); + fluidProduced.update(currentCard.getFluidBBLMoved()); + oilProduced.update(currentCard.getOilBBLMoved()); + waterProduced.update(currentCard.getWaterBBLMoved()); + gasProduced.update(currentCard.getGasMCFMoved()); + pumpIntakePressure.update(currentCard.getPumpIntakePressure()); + surfaceStrokeLength.update(currentCard.getSurfaceStrokeLength()); + tubingMovement.update(currentCard.getTubingMovement()); + currentCard = new Card(strokesLifetime); pointCounter = -1; if (strokesSinceStart > startupStrokes) { @@ -862,49 +1003,29 @@ public class Well { lastDirection = direction; pointCounter++; } + if(isNewDay()){ + strokeSpeed.endOfDay(); + downholeGrossStroke.endOfDay(); + downholeNetStroke.endOfDay(); + fluidLevel.endOfDay(); + fluidLoad.endOfDay(); + inflowRate.endOfDay(); + peakPolishedRodLoad.endOfDay(); + minPolishedRodLoad.endOfDay(); + percentRun.endOfDay(); + polishedRodHP.endOfDay(); + pumpHP.endOfDay(); + fluidProduced.endOfDay(); + oilProduced.endOfDay(); + waterProduced.endOfDay(); + gasProduced.endOfDay(); + pumpIntakePressure.endOfDay(); + surfaceStrokeLength.endOfDay(); + tubingMovement.endOfDay(); + } } - public void endOfStroke(){ - currentCard.setNumPointsUsed(pointCounter + 1); - currentCard.calcStrokeData(150, fluidGradient, - rodDepthTotal, tubingAnchorDepth, - tubingCrossSectionalArea, pumpArea, - frictionEstimate, structuralRating, fluidWaterRatio, fluidOilRatio, fluidGasRatio); - for (int j = 98; j >= 0; j--) { - cardStorage[j + 1] = cardStorage[j]; - } - cardStorage[0] = currentCard; - currentCard.printCard("csv", true); - strokesSinceStart++; - strokesToday++; - strokesLifetime++; - strokeSpeed.update(currentCard.getStrokeSpeed()); - downholeGrossStroke.update(currentCard.getDownholeGrossStrokeLength()); - downholeNetStroke.update(currentCard.getDownholeNetStrokeLength()); - fluidLevel.update(currentCard.getFluidLevel()); - fluidLoad.update(currentCard.getFluidLoad()); - peakPolishedRodLoad.update(currentCard.getSurfaceLoadMax().getLoad()); - minPolishedRodLoad.update(currentCard.getSurfaceLoadMin().getLoad()); - polishedRodHP.update(currentCard.getPolishedRodHorsepower()); - pumpHP.update(currentCard.getPumpHorsepower()); - fluidProduced.update(currentCard.getFluidBBLMoved()); - oilProduced.update(currentCard.getOilBBLMoved()); - waterProduced.update(currentCard.getWaterBBLMoved()); - gasProduced.update(currentCard.getGasMCFMoved()); - pumpIntakePressure.update(currentCard.getPumpIntakePressure()); - surfaceStrokeLength.update(currentCard.getSurfaceStrokeLength()); - tubingMovement.update(currentCard.getTubingMovement()); - - printTotals(); - - currentCard = new Card(strokesLifetime); - pointCounter = -1; - if (strokesSinceStart > startupStrokes){ - runStatus = RUNSTATUS_RUNNING; - } - - } public void eval(int simPoint){ checkSafeties(); diff --git a/src/main/java/com/henrypump/poc/WellTest.java b/src/main/java/com/henrypump/poc/WellTest.java new file mode 100644 index 0000000..15e7e4f --- /dev/null +++ b/src/main/java/com/henrypump/poc/WellTest.java @@ -0,0 +1,78 @@ +package com.henrypump.poc; + +import org.bson.Document; +import java.util.Date; + +/** + * Created by patrickjmcd on 2/7/17. + */ +public class WellTest { + private double testHours; + private Date testStart; + + private double totalFluidBBL, testOilBBL, testWaterBBL, testGasMCF; + private double kFactor, oilRatio, waterRatio, gasMCFRatio; + + + public WellTest(Date testStart, double testHours, double totalFluidBBL, double testOilBBL, double testWaterBBL, double testGasMCF, Well well) { + this.testStart = testStart; + this.testHours = testHours; + this.totalFluidBBL = totalFluidBBL; + this.testOilBBL = testOilBBL; + this.testWaterBBL = testWaterBBL; + this.testGasMCF = testGasMCF; + + this.oilRatio = this.testOilBBL / this.totalFluidBBL; + this.waterRatio = this.testWaterBBL / this.totalFluidBBL; + this.gasMCFRatio = this.testGasMCF / this.totalFluidBBL; + + this.kFactor = 1.0; + double lastProductionMeasured = well.db.getPreviousDailyTotal(this.testStart); + if(lastProductionMeasured != -1.0){; + this.kFactor = this.totalFluidBBL / lastProductionMeasured; + } else { + System.out.println("No production data in db"); + } + } + + public double getTestHours() { + return testHours; + } + + public Date getTestStart() { + return testStart; + } + + public double getTotalFluidBBL() { + return totalFluidBBL; + } + + public double getTestOilBBL() { + return testOilBBL; + } + + public double getTestWaterBBL() { + return testWaterBBL; + } + + public double getTestGasMCF() { + return testGasMCF; + } + + public double getkFactor() { + return kFactor; + } + + public double getOilRatio() { + return oilRatio; + } + + public double getWaterRatio() { + return waterRatio; + } + + public double getGasMCFRatio() { + return gasMCFRatio; + } + +}