diff --git a/src/main/java/com/henrypump/poc/CLScanner.java b/src/main/java/com/henrypump/poc/CLScanner.java index 5b9f9d5..66dacf6 100644 --- a/src/main/java/com/henrypump/poc/CLScanner.java +++ b/src/main/java/com/henrypump/poc/CLScanner.java @@ -37,6 +37,11 @@ class CLScanner implements Runnable { poc.thisWell.printTotals(); } + private void gaugeOff() { + poc.thisWell.gaugeOff(); + poc.thisWell.printTotals(); + } + private void help(){ System.out.println(""); System.out.println("== HELP MENU =="); @@ -77,6 +82,9 @@ class CLScanner implements Runnable { case "showtapers": showTapers(); break; + case "gaugeoff": + gaugeOff(); + break; case "help": help(); break; diff --git a/src/main/java/com/henrypump/poc/Well.java b/src/main/java/com/henrypump/poc/Well.java index 95ea2de..ba86842 100644 --- a/src/main/java/com/henrypump/poc/Well.java +++ b/src/main/java/com/henrypump/poc/Well.java @@ -45,8 +45,8 @@ public class Well { // CONSTANTS private static double YM_STEEL = 30.5; private static double YM_FIBERGLASS = 7.2; - public static final int BAD_STATUS = 0; - public static final int GOOD_STATUS = 1; + static final int BAD_STATUS = 0; + static final int GOOD_STATUS = 1; /* USER INPUTS */ private double dt; @@ -181,25 +181,7 @@ public class Well { inclinometer = new AnalogIn(inclinometerChannel, 0, 100, 0, 100); loadCell = new AnalogIn(loadCellChannel, 0, 50000, 0, 50000); - 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); - fluidProducedAdjusted = new Measurement("Fluid Produced (adjusted)", 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); + initializeMeasurements(); } Well(String wellName, String simFileName, int inclinometerChannel, int loadCellChannel, int runCommandChannel){ @@ -211,6 +193,10 @@ public class Well { inclinometer = new AnalogIn(inclinometerChannel, 0, 100, 0, 100); loadCell = new AnalogIn(loadCellChannel, 0, 50000, 0, 50000); + initializeMeasurements(); + } + + private void initializeMeasurements(){ 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); @@ -490,7 +476,7 @@ public class Well { // WELL CALCULATION FUNCTIONS - public static double lookupRodWeightPerFoot(double i_ym, double i_diam) { + private static double lookupRodWeightPerFoot(double i_ym, double i_diam) { double wtPerFt; if (i_ym == YM_STEEL) { if (i_diam <= 2 && i_diam > 1.75) { @@ -538,7 +524,7 @@ public class Well { return wtPerFt; }; - public void parseJSONFile(String jsonFilename){ + void parseJSONFile(String jsonFilename){ JSONParser parser = new JSONParser(); try { Object obj = parser.parse(new FileReader(jsonFilename)); @@ -590,18 +576,14 @@ public class Well { if (newDampingFactor != null) setDampingFactor(currentTaperNum, (Double) newDampingFactor); } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (ParseException e) { + } catch (IOException | ParseException e) { e.printStackTrace(); } updateTapers(); } - public void printTapers(){ + void printTapers(){ System.out.println("===== " + wellName + " ====="); System.out.println("--- INPUT PARAMETERS ---"); @@ -673,7 +655,7 @@ public class Well { }; - public void updateTapers(){ + private void updateTapers(){ nT1 = numTapers + 1; // start by setting everything to 0 @@ -919,9 +901,8 @@ public class Well { rodDepthTotal, tubingAnchorDepth, tubingCrossSectionalArea, pumpArea, frictionEstimate, structuralRating, kFactor, fluidWaterRatio, fluidOilRatio, fluidGasRatio); - for (int j = 98; j >= 0; j--) { - cardStorage[j + 1] = cardStorage[j]; - } + + System.arraycopy(cardStorage, 0, cardStorage, 1, cardStorage.length-1); cardStorage[0] = currentCard; currentCard.printCard("none", true); strokesSinceStart++; @@ -955,6 +936,30 @@ public class Well { } + public void gaugeOff(){ + strokeSpeed.endOfDay(); + downholeGrossStroke.endOfDay(); + downholeNetStroke.endOfDay(); + fluidLevel.endOfDay(); + fluidLoad.endOfDay(); + inflowRate.endOfDay(); + peakPolishedRodLoad.endOfDay(); + minPolishedRodLoad.endOfDay(); + percentRun.endOfDay(); + polishedRodHP.endOfDay(); + pumpHP.endOfDay(); + fluidProduced.endOfDay(); + fluidProducedAdjusted.endOfDay(); + oilProduced.endOfDay(); + waterProduced.endOfDay(); + gasProduced.endOfDay(); + pumpIntakePressure.endOfDay(); + surfaceStrokeLength.endOfDay(); + tubingMovement.endOfDay(); + + strokesToday = 0; + } + public void eval(){ checkSafeties(); currentSurfacePosition = inclinometer.readScaled(); @@ -985,30 +990,10 @@ public class Well { } 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(); - fluidProducedAdjusted.endOfDay(); - oilProduced.endOfDay(); - waterProduced.endOfDay(); - gasProduced.endOfDay(); - pumpIntakePressure.endOfDay(); - surfaceStrokeLength.endOfDay(); - tubingMovement.endOfDay(); + gaugeOff(); } } - - public void eval(int simPoint){ checkSafeties(); currentSurfacePosition = inclinometer.readScaledSim(sim.getPositionAtIndex(simPoint)); @@ -1040,25 +1025,7 @@ public class Well { } 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(); - fluidProducedAdjusted.endOfDay(); - oilProduced.endOfDay(); - waterProduced.endOfDay(); - gasProduced.endOfDay(); - pumpIntakePressure.endOfDay(); - surfaceStrokeLength.endOfDay(); - tubingMovement.endOfDay(); + gaugeOff(); } } public void printTotals(){