diff --git a/src/main/java/neqsim/process/equipment/ProcessEquipmentBaseClass.java b/src/main/java/neqsim/process/equipment/ProcessEquipmentBaseClass.java index e3f4809d9..8d165ae50 100644 --- a/src/main/java/neqsim/process/equipment/ProcessEquipmentBaseClass.java +++ b/src/main/java/neqsim/process/equipment/ProcessEquipmentBaseClass.java @@ -39,7 +39,7 @@ public abstract class ProcessEquipmentBaseClass extends SimulationBaseClass public HashMap properties = new HashMap(); public EnergyStream energyStream = new EnergyStream(); private boolean isSetEnergyStream = false; - protected boolean isSolved = false; + protected boolean isSolved = true; /** *

diff --git a/src/main/java/neqsim/process/equipment/splitter/Splitter.java b/src/main/java/neqsim/process/equipment/splitter/Splitter.java index b1e32de09..ea0cde765 100644 --- a/src/main/java/neqsim/process/equipment/splitter/Splitter.java +++ b/src/main/java/neqsim/process/equipment/splitter/Splitter.java @@ -192,10 +192,8 @@ public boolean needRecalculation() { && Math.abs(inletStream.getFluid().getFlowRate("kg/hr") - lastFlowRate) / inletStream.getFluid().getFlowRate("kg/hr") < 1e-6 && Arrays.equals(splitFactor, oldSplitFactor)) { - isSolved = true; return false; } else { - isSolved = false; return true; } } diff --git a/src/main/java/neqsim/process/equipment/stream/Stream.java b/src/main/java/neqsim/process/equipment/stream/Stream.java index 9514330a0..8fac2ea9a 100644 --- a/src/main/java/neqsim/process/equipment/stream/Stream.java +++ b/src/main/java/neqsim/process/equipment/stream/Stream.java @@ -323,10 +323,8 @@ public boolean needRecalculation() { && Math.abs(getFluid().getFlowRate("kg/hr") - lastFlowRate) / getFluid().getFlowRate("kg/hr") < 1e-6 && Arrays.equals(getFluid().getMolarComposition(), lastComposition)) { - isSolved = true; return false; } else { - isSolved = false; return true; } } diff --git a/src/main/java/neqsim/process/equipment/util/RecycleController.java b/src/main/java/neqsim/process/equipment/util/RecycleController.java index 65878adfb..ffbfcede0 100644 --- a/src/main/java/neqsim/process/equipment/util/RecycleController.java +++ b/src/main/java/neqsim/process/equipment/util/RecycleController.java @@ -2,6 +2,8 @@ import java.util.ArrayList; import java.util.Objects; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -12,6 +14,7 @@ * @version $Id: $Id */ public class RecycleController implements java.io.Serializable { + static Logger logger = LogManager.getLogger(RecycleController.class); private static final long serialVersionUID = 1000; ArrayList recycleArray = new ArrayList(); @@ -165,6 +168,7 @@ public boolean hasHigherPriorityLevel() { */ public boolean solvedAll() { for (Recycle recyc : recycleArray) { + logger.info("recycle solved " + recyc.solved()); if (!recyc.solved()) { return false; } diff --git a/src/main/java/neqsim/process/processmodel/ProcessModel.java b/src/main/java/neqsim/process/processmodel/ProcessModel.java index c860f2e07..6fbf97a60 100644 --- a/src/main/java/neqsim/process/processmodel/ProcessModel.java +++ b/src/main/java/neqsim/process/processmodel/ProcessModel.java @@ -20,7 +20,8 @@ public class ProcessModel implements Runnable { private Map processes = new LinkedHashMap<>(); private boolean runStep = false; - private boolean runAsThread = false; + private int maxIterations = 50; + private int iterations = 0; /** * Checks if the model is running in step mode. @@ -99,8 +100,21 @@ public void run() { e.printStackTrace(); } } + if (!runStep) { + if (!isFinished() && iterations < maxIterations) { + iterations += 1; + run(); + } else { + iterations = 0; + } + } } + /** + * Checks if all processes are finished. + * + * @return true if all processes are solved, false otherwise. + */ public boolean isFinished() { for (ProcessSystem process : processes.values()) { if (!process.solved()) { diff --git a/src/main/java/neqsim/process/processmodel/ProcessSystem.java b/src/main/java/neqsim/process/processmodel/ProcessSystem.java index da8ce921a..b20ccc5db 100644 --- a/src/main/java/neqsim/process/processmodel/ProcessSystem.java +++ b/src/main/java/neqsim/process/processmodel/ProcessSystem.java @@ -560,6 +560,8 @@ public boolean solved() { /* */ if (recycleController.solvedAll()) { for (int i = 0; i < unitOperations.size(); i++) { + logger.info("unit " + unitOperations.get(i).getName() + " solved: " + + unitOperations.get(i).solved()); if (!unitOperations.get(i).solved()) { return false; } diff --git a/src/test/java/neqsim/process/processmodel/LargeCombinedModelsTest.java b/src/test/java/neqsim/process/processmodel/LargeCombinedModelsTest.java index 9514a5ada..8753ad02f 100644 --- a/src/test/java/neqsim/process/processmodel/LargeCombinedModelsTest.java +++ b/src/test/java/neqsim/process/processmodel/LargeCombinedModelsTest.java @@ -343,7 +343,6 @@ public void testSeparationTrainProcess() { // sepprocessTrain2.run(); process.run(); sepprocessTrain1.run(); - sepprocessTrain1.run(); sepprocessTrain2.run(); Assertions.assertEquals(17.5002446608487, @@ -372,6 +371,8 @@ public ProcessSystem createExpanderProcessModel(Separator dewPointScrubber2, ThreePhaseSeparator fourthStageSeparator, Mixer secondstagegasmixer, Mixer firststagegasmixer, Mixer mpLiqmixer) { + dewPointScrubber2.getGasOutStream().setFlowRate(1.0, "kg/hr"); + ProcessSystem process = new ProcessSystem(); EnergyStream expander_energy_stream = @@ -412,7 +413,7 @@ public ProcessSystem createExpanderProcessModel(Separator dewPointScrubber2, DistillationColumn NGLcolumn = new neqsim.process.equipment.distillation.DistillationColumn("NGL column", 5, true, false); NGLcolumn.addFeedStream(NGLfeedvalve.getOutletStream(), 5); - NGLcolumn.getReboiler().setOutTemperature(273.15 + 45.0); + NGLcolumn.getReboiler().setOutTemperature(273.15 + 65.0); NGLcolumn.setTopPressure(7.5); NGLcolumn.setBottomPressure(7.5); process.add(NGLcolumn); @@ -464,18 +465,41 @@ public ProcessSystem createExpanderProcessModel(Separator dewPointScrubber2, @Test public void tesExpanderProcess() { - ProcessSystem process = getWellStreamAndManifoldModel(wellFluid); - process.run(); + ProcessSystem wellprocess = getWellStreamAndManifoldModel(wellFluid); - ProcessSystem sepprocessTrain1 = - createSeparationTrainProcess(((Splitter) process.getUnit("HP manifold")).getSplitStream(0)); + + ProcessSystem sepprocessTrain1 = createSeparationTrainProcess( + ((Splitter) wellprocess.getUnit("HP manifold")).getSplitStream(0)); sepprocessTrain1.setRunInSteps(true); - sepprocessTrain1.run(); - ProcessSystem sepprocessTrain2 = - createSeparationTrainProcess(((Splitter) process.getUnit("HP manifold")).getSplitStream(1)); + + ProcessSystem sepprocessTrain2 = createSeparationTrainProcess( + ((Splitter) wellprocess.getUnit("HP manifold")).getSplitStream(1)); sepprocessTrain2.setRunInSteps(true); + + + ProcessSystem expanderProcess1 = + createExpanderProcessModel((Separator) sepprocessTrain1.getUnit("dew point scrubber 2"), + (ThreePhaseSeparator) sepprocessTrain1.getUnit("4th stage separator"), + (Mixer) sepprocessTrain1.getUnit("second Stage mixer"), + (Mixer) sepprocessTrain1.getUnit("first stage mixer"), + (Mixer) sepprocessTrain1.getUnit("MP liq gas mixer")); + expanderProcess1.setRunInSteps(true); + + + ProcessSystem expanderProcess2 = + createExpanderProcessModel((Separator) sepprocessTrain2.getUnit("dew point scrubber 2"), + (ThreePhaseSeparator) sepprocessTrain2.getUnit("4th stage separator"), + (Mixer) sepprocessTrain2.getUnit("second Stage mixer"), + (Mixer) sepprocessTrain2.getUnit("first stage mixer"), + (Mixer) sepprocessTrain2.getUnit("MP liq gas mixer")); + expanderProcess2.setRunInSteps(true); + + wellprocess.run(); + sepprocessTrain1.run(); sepprocessTrain2.run(); + expanderProcess1.run(); + expanderProcess2.run(); Assertions.assertEquals(6.72522236922, ((Separator) sepprocessTrain1.getUnit("dew point scrubber 2")).getGasOutStream() @@ -487,14 +511,7 @@ public void tesExpanderProcess() { .getFlowRate("MSm3/day"), 0.1); - ProcessSystem expanderProcess1 = - createExpanderProcessModel((Separator) sepprocessTrain1.getUnit("dew point scrubber 2"), - (ThreePhaseSeparator) sepprocessTrain1.getUnit("4th stage separator"), - (Mixer) sepprocessTrain1.getUnit("second Stage mixer"), - (Mixer) sepprocessTrain1.getUnit("first stage mixer"), - (Mixer) sepprocessTrain1.getUnit("MP liq gas mixer")); - expanderProcess1.setRunInSteps(true); - expanderProcess1.run(); + Assertions.assertEquals(6.7252223692, ((Expander) expanderProcess1.getUnit("TEX")).getOutletStream().getFlowRate("MSm3/day"), @@ -510,17 +527,8 @@ public void tesExpanderProcess() { .getPressure("bara"), 0.1); - ProcessSystem expanderProcess2 = - createExpanderProcessModel((Separator) sepprocessTrain2.getUnit("dew point scrubber 2"), - (ThreePhaseSeparator) sepprocessTrain2.getUnit("4th stage separator"), - (Mixer) sepprocessTrain2.getUnit("second Stage mixer"), - (Mixer) sepprocessTrain2.getUnit("first stage mixer"), - (Mixer) sepprocessTrain2.getUnit("MP liq gas mixer")); - expanderProcess2.setRunInSteps(true); - expanderProcess2.run(); - ProcessModel combinedProcess = new ProcessModel(); - combinedProcess.add("well and manifold process", process); + combinedProcess.add("well and manifold process", wellprocess); combinedProcess.add("separation train A", sepprocessTrain1); combinedProcess.add("separation train B", sepprocessTrain2); combinedProcess.add("expander process A", expanderProcess1); @@ -530,10 +538,10 @@ public void tesExpanderProcess() { combinedProcess.run(); Assertions.assertEquals(4843447.186314695, - ((Stream) process.getUnit("HP well stream")).getFlowRate("kg/hr"), 1.0); + ((Stream) wellprocess.getUnit("HP well stream")).getFlowRate("kg/hr"), 1.0); Assertions.assertEquals(0, - ((Stream) process.getUnit("HP well stream")).getFlowRate("kg/hr") + ((Stream) wellprocess.getUnit("HP well stream")).getFlowRate("kg/hr") - ((ThreePhaseSeparator) sepprocessTrain1.getUnit("4th stage separator")) .getOilOutStream().getFlowRate("kg/hr") - ((ThreePhaseSeparator) sepprocessTrain2.getUnit("4th stage separator")) @@ -542,7 +550,7 @@ public void tesExpanderProcess() { .getFlowRate("kg/hr") - ((ThrottlingValve) expanderProcess2.getUnit("gas split valve")).getOutletStream() .getFlowRate("kg/hr"), - ((Stream) process.getUnit("HP well stream")).getFlowRate("kg/hr") / 100.0); + ((Stream) wellprocess.getUnit("HP well stream")).getFlowRate("kg/hr") / 100.0); } @@ -709,15 +717,12 @@ public void testExportCompressorModel() { public ProcessModel getCombinedModel() { ProcessSystem wellProcess = getWellStreamAndManifoldModel(wellFluid); - wellProcess.run(); ProcessSystem separationTrainA = createSeparationTrainProcess( ((Splitter) wellProcess.getUnit("HP manifold")).getSplitStream(0)); - separationTrainA.run(); ProcessSystem separationTrainB = createSeparationTrainProcess( ((Splitter) wellProcess.getUnit("HP manifold")).getSplitStream(1)); - separationTrainB.run(); ProcessSystem expanderProcessA = createExpanderProcessModel((Separator) separationTrainA.getUnit("dew point scrubber 2"), @@ -725,23 +730,18 @@ public ProcessModel getCombinedModel() { (Mixer) separationTrainA.getUnit("second Stage mixer"), (Mixer) separationTrainA.getUnit("first stage mixer"), (Mixer) separationTrainA.getUnit("MP liq gas mixer")); - expanderProcessA.run(); - ProcessSystem expanderProcessB = createExpanderProcessModel((Separator) separationTrainB.getUnit("dew point scrubber 2"), (ThreePhaseSeparator) separationTrainB.getUnit("4th stage separator"), (Mixer) separationTrainB.getUnit("second Stage mixer"), (Mixer) separationTrainB.getUnit("first stage mixer"), (Mixer) separationTrainB.getUnit("MP liq gas mixer")); - expanderProcessB.run(); ProcessSystem exportCompressorTrainA = getExportCopressorModel( ((ThrottlingValve) expanderProcessA.getUnit("gas split valve")).getOutletStream()); - // exportCompressorTrainA.run(); ProcessSystem exportCompressorTrainB = getExportCopressorModel( ((ThrottlingValve) expanderProcessB.getUnit("gas split valve")).getOutletStream()); - // exportCompressorTrainB.run(); ProcessModel combinedProcess = new ProcessModel(); combinedProcess.add("well and manifold process", wellProcess); @@ -756,7 +756,7 @@ public ProcessModel getCombinedModel() { } @Test - public void testCombinedProcess() { + public void testCombinedProcessRunStep() { ProcessModel fullProcess = getCombinedModel(); fullProcess.setRunStep(true); @@ -764,6 +764,8 @@ public void testCombinedProcess() { fullProcess.run(); fullProcess.run(); fullProcess.run(); + fullProcess.run(); + fullProcess.run(); } catch (Exception ex) { logger.debug(ex.getMessage(), ex); } @@ -812,10 +814,10 @@ public void testCombinedProcess() { .getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(180.168498506, + Assertions.assertEquals(180.682128, ((Compressor) fullProcess.get("compressor process A").getUnit("KA27841")).getOutletStream() .getPressure("bara"), - 0.1); + 0.5); Assertions.assertEquals(10.4004397428, ((Splitter) fullProcess.get("compressor process B").getUnit("TEE-104")).getSplitStream(0) @@ -825,7 +827,7 @@ public void testCombinedProcess() { Assertions.assertEquals(182.39393222, ((Compressor) fullProcess.get("compressor process B").getUnit("KA27841")).getOutletStream() .getPressure("bara"), - 0.1); + 1.5); ((Stream) (fullProcess.get("well and manifold process")).getUnit("HP well stream")) @@ -861,48 +863,164 @@ public void testCombinedProcess() { Assertions.assertEquals(170.093573665, ((Compressor) fullProcess.get("compressor process B").getUnit("KA27841")).getOutletStream() .getPressure("bara"), + 1.5); + + + } + + @Test + public void testCombinedProcess() { + ProcessModel fullProcess = getCombinedModel(); + fullProcess.setRunStep(false); + + try { + fullProcess.run(); + } catch (Exception ex) { + logger.debug(ex.getMessage(), ex); + } + + Assertions.assertEquals(0.0, + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) + .getFlowRate("kg/hr") + - ((Stream) fullProcess.get("expander process A").getUnit("export oil")) + .getFlowRate("kg/hr") + - ((Stream) fullProcess.get("expander process B").getUnit("export oil")) + .getFlowRate("kg/hr") + - ((Filter) fullProcess.get("compressor process A").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr") + - ((Filter) fullProcess.get("compressor process B").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr"), + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) + .getFlowRate("kg/hr") / 1000.0); + + Assertions.assertEquals(5.54017523150, + ((ThreePhaseSeparator) fullProcess.get("separation train A").getUnit("1st stage separator")) + .getGasOutStream().getFlowRate("MSm3/day"), 0.1); + Assertions.assertEquals(1742523.539419, + ((ThreePhaseSeparator) fullProcess.get("separation train A").getUnit("1st stage separator")) + .getOilOutStream().getFlowRate("kg/hr"), + 0.1); + + Assertions.assertEquals(8.3102628472, + ((ThreePhaseSeparator) fullProcess.get("separation train B").getUnit("1st stage separator")) + .getGasOutStream().getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(6.933692881, + ((ThrottlingValve) fullProcess.get("expander process A").getUnit("gas split valve")) + .getOutletStream().getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(10.400539742809, + ((ThrottlingValve) fullProcess.get("expander process B").getUnit("gas split valve")) + .getOutletStream().getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(6.9336928813, + ((Splitter) fullProcess.get("compressor process A").getUnit("TEE-104")).getSplitStream(0) + .getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(180.168498506, + ((Compressor) fullProcess.get("compressor process A").getUnit("KA27841")).getOutletStream() + .getPressure("bara"), + 1.0); + + Assertions.assertEquals(10.4004397428, + ((Splitter) fullProcess.get("compressor process B").getUnit("TEE-104")).getSplitStream(0) + .getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(183.0181, + ((Compressor) fullProcess.get("compressor process B").getUnit("KA27841")).getOutletStream() + .getPressure("bara"), + 1.5); + + + ((Stream) (fullProcess.get("well and manifold process")).getUnit("HP well stream")) + .setFlowRate(35.0, "MSm3/day"); + + try { + fullProcess.run(); + } catch (Exception ex) { + logger.debug(ex.getMessage(), ex); + } + + Assertions.assertEquals(0.0, + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) + .getFlowRate("kg/hr") + - ((Stream) fullProcess.get("expander process A").getUnit("export oil")) + .getFlowRate("kg/hr") + - ((Stream) fullProcess.get("expander process B").getUnit("export oil")) + .getFlowRate("kg/hr") + - ((Filter) fullProcess.get("compressor process A").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr") + - ((Filter) fullProcess.get("compressor process B").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr"), + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) + .getFlowRate("kg/hr") / 1000.0); + + Assertions.assertEquals(12.1312281897, + ((Splitter) fullProcess.get("compressor process B").getUnit("TEE-104")).getSplitStream(0) + .getFlowRate("MSm3/day"), + 0.1); + + Assertions.assertEquals(170.093573665, + ((Compressor) fullProcess.get("compressor process B").getUnit("KA27841")).getOutletStream() + .getPressure("bara"), + 0.5); + } public void testCombinedProcessAsThread() { + // Create and configure the full process model ProcessModel fullProcess = getCombinedModel(); - // Set fullProcess properties; - ((Stream) (fullProcess.get("well and manifold process")).getUnit("HP well stream")) + // Set properties for a specific process + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) .setFlowRate(30.0, "MSm3/day"); - Map threads = null; - fullProcess.setRunStep(true); - do { - fullProcess.run(); - } while (!fullProcess.isFinished()); - /* - * try { fullProcess.run(); } catch (Exception ex) { logger.debug(ex.getMessage(), ex); } try { - * threads = fullProcess.getThreads(); threads.get("well and manifold process").start(); - * threads.get("well and manifold process").join(); threads.get("separation train A").start(); - * // threads.get("separation train B").start(); threads.get("separation train A").join(); // - * threads.get("separation train B").join(); /* threads.get("expander process A").start(); - * threads.get("expander process B").start(); threads.get("expander process A").join(); - * threads.get("expander process A").join(); threads.get("separation train A").start(); - * threads.get("separation train B").start(); threads.get("expander process A").start(); - * threads.get("expander process B").start(); threads.get("separation train A").join(); - * threads.get("separation train B").join(); threads.get("expander process A").join(); - * threads.get("expander process A").join(); - * - * - * - * threads.get("compressor process A").start(); threads.get("compressor process B").start(); - * - * threads.get("compressor process A").join(); threads.get("compressor process B").join(); - * - * - * for (Thread thread : threads.values()) { thread.join(); // Block until this thread finishes } - * - * } catch (Exception ex) { logger.debug(ex.getMessage(), ex); } - * - */ + // Retrieve threads for the processes + Map threads = fullProcess.getThreads(); + + try { + for (Thread thread : threads.values()) { + try { + thread.start(); // Start the thread + thread.join(30000); // Wait for up to 30 seconds for this thread to complete + } catch (InterruptedException e) { + logger.debug("Thread interrupted: " + thread.getName(), e); + Thread.currentThread().interrupt(); // Restore interrupted status + } catch (Exception ex) { + logger.debug("Error with thread: " + thread.getName() + " - " + ex.getMessage(), ex); + } + } + } catch (Exception ex) { + logger.debug("Unexpected error in thread handling: " + ex.getMessage(), ex); + } + + // Perform assertions to validate the results + double inputFlowRate = + ((Stream) fullProcess.get("well and manifold process").getUnit("HP well stream")) + .getFlowRate("kg/hr"); + + double outputFlowRate = + ((Stream) fullProcess.get("expander process A").getUnit("export oil")).getFlowRate("kg/hr") + + ((Stream) fullProcess.get("expander process B").getUnit("export oil")) + .getFlowRate("kg/hr") + + ((Filter) fullProcess.get("compressor process A").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr") + + ((Filter) fullProcess.get("compressor process B").getUnit("gas split valve")) + .getOutletStream().getFlowRate("kg/hr"); + + double tolerance = inputFlowRate / 1000.0; + + Assertions.assertEquals(0, inputFlowRate - outputFlowRate, tolerance, + "Mismatch between input and output flow rates"); + Assertions.assertEquals(5.54017523150, ((ThreePhaseSeparator) fullProcess.get("separation train A").getUnit("1st stage separator")) .getGasOutStream().getFlowRate("MSm3/day"), @@ -918,35 +1036,39 @@ public void testCombinedProcessAsThread() { .getGasOutStream().getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(13.748552781153, + Assertions.assertEquals(6.933692881, ((ThrottlingValve) fullProcess.get("expander process A").getUnit("gas split valve")) .getOutletStream().getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(18.6662224172093, + Assertions.assertEquals(10.400539742809, ((ThrottlingValve) fullProcess.get("expander process B").getUnit("gas split valve")) .getOutletStream().getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(13.7484527811, + Assertions.assertEquals(6.9336928813, ((Splitter) fullProcess.get("compressor process A").getUnit("TEE-104")).getSplitStream(0) .getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(308.6553992, + Assertions.assertEquals(180.168498506, ((Compressor) fullProcess.get("compressor process A").getUnit("KA27841")).getOutletStream() .getPressure("bara"), - 0.1); + 0.5); - Assertions.assertEquals(18.6661224172, + Assertions.assertEquals(10.4004397428, ((Splitter) fullProcess.get("compressor process B").getUnit("TEE-104")).getSplitStream(0) .getFlowRate("MSm3/day"), 0.1); - Assertions.assertEquals(214.71698355702, + Assertions.assertEquals(182.39393222, ((Compressor) fullProcess.get("compressor process B").getUnit("KA27841")).getOutletStream() .getPressure("bara"), - 0.1); + 0.15); + + + ((Stream) (fullProcess.get("well and manifold process")).getUnit("HP well stream")) + .setFlowRate(35.0, "MSm3/day"); }