Well measurements now can be stored in database

also added some more sample data
This commit is contained in:
Patrick McDonagh
2017-02-06 18:06:35 -06:00
parent 73d376038c
commit 02b28ca1e6
22 changed files with 446 additions and 108 deletions

View File

@@ -27,7 +27,7 @@ public class Well {
protected Simulation sim;
protected Database db;
// IO
/* IO */
AnalogIn inclinometer;
AnalogIn loadCell;
DigitalOut runCommand;
@@ -36,7 +36,7 @@ public class Well {
private double currentDownholePosition;
private double currentDownholeLoad;
// CARDS
/* CARDS */
private Card currentCard;
private Card[] cardStorage = new Card[100];
@@ -46,7 +46,7 @@ public class Well {
public static final int BAD_STATUS = 0;
public static final int GOOD_STATUS = 1;
// USER INPUTS
/* USER INPUTS */
private double dt;
private double tubingHeadPressure;
private double fluidGradient;
@@ -139,24 +139,24 @@ public class Well {
private double fluidGasRatio; // MCF of gas per 1 BBL fluid
// Measurements
private Measurement strokeSpeed = new Measurement();
private Measurement downholeGrossStroke = new Measurement();
private Measurement downholeNetStroke = new Measurement();
private Measurement fluidLevel = new Measurement();
private Measurement fluidLoad = new Measurement();
private Measurement inflowRate = new Measurement();
private Measurement peakPolishedRodLoad = new Measurement();
private Measurement minPolishedRodLoad = new Measurement();
private Measurement percentRun = new Measurement();
private Measurement polishedRodHP = new Measurement();
private Measurement pumpHP = new Measurement();
private Measurement fluidProduced = new Measurement();
private Measurement oilProduced = new Measurement();
private Measurement waterProduced = new Measurement();
private Measurement gasProduced = new Measurement();
private Measurement pumpIntakePressure = new Measurement();
private Measurement surfaceStrokeLength = new Measurement();
private Measurement tubingMovement = new Measurement();
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);
Well(String wellName, int inclinometerChannel, int loadCellChannel, int runCommandChannel){
this.wellName = wellName;
@@ -529,6 +529,13 @@ public class Well {
inputTable.addRule();
inputTable.addRow("Number of Tapers", getNumTapers());
inputTable.addRule();
inputTable.addRow("Buoyant Force Total", buoyantForceTotal);
inputTable.addRow("Weight Data Total", weightDataTotal);
inputTable.addRow("Annular Force Data Total", annularForceDataTotal);
inputTable.addRow("Rod Depth Total", rodDepthTotal);
inputTable.addRow("Rod Weight Air Total", rodWeightAirTotal);
inputTable.addRow("Rod Weight Fluid Total", rodWeightFluidTotal);
inputTable.addRule();
V2_AsciiTableRenderer rend = new V2_AsciiTableRenderer();
rend.setTheme(V2_E_TableThemes.UTF_LIGHT.get());
rend.setWidth(new WidthAbsoluteEven(50));
@@ -547,6 +554,23 @@ public class Well {
taperTable.addRow("Rod Material", getRodMaterial(i));
taperTable.addRow("Rod Young's Modulus", getRodYM(i));
taperTable.addRule();
taperTable.addRow("a", a[i]);
taperTable.addRow("Area", area[i]);
taperTable.addRow("Pressure", pressure[i]);
taperTable.addRow("Buoyant Force", buoyantForce[i]);
taperTable.addRow("Stretch", stretch[i]);
taperTable.addRow("WeightData", weightData[i]);
taperTable.addRow("Annular Force Data", annularForceData[i]);
taperTable.addRow("force", force[i]);
taperTable.addRow("Alpha", alpha[i]);
taperTable.addRow("xOverA", xOverA[i]);
taperTable.addRow("Factor", factor[i]);
taperTable.addRow("Lag Index", lagIndex[i]);
taperTable.addRow("Length Required", lengthRequired[i]);
taperTable.addRow("Center Point", centerPoint[i]);
taperTable.addRow("Rod Depth", rodDepth[i]);
taperTable.addRow("Rod Weight in Air", rodWeightAir[i]);
taperTable.addRow("Rod Weight in Fluid", rodWeightFluid[i]);
rend.setTheme(V2_E_TableThemes.UTF_LIGHT.get());
rend.setWidth(new WidthAbsoluteEven(50));
rt = rend.render(taperTable);
@@ -554,7 +578,6 @@ public class Well {
System.out.println();
}
};
public void updateTapers(){
@@ -851,7 +874,7 @@ public class Well {
cardStorage[j + 1] = cardStorage[j];
}
cardStorage[0] = currentCard;
currentCard.printCard("none", true);
currentCard.printCard("csv", true);
strokesSinceStart++;
strokesToday++;
strokesLifetime++;