From 987979d798267f17a165431b3379cf7028b52582 Mon Sep 17 00:00:00 2001 From: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:13:05 +0200 Subject: [PATCH] fix: flow induced vibrations (#1031) --- .../util/FlowRateAdjuster.java | 34 +++++++----------- .../FLowInducedVibrationTest.java | 35 ++++--------------- 2 files changed, 18 insertions(+), 51 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java index 0a27953ed..aec7f663a 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java @@ -3,8 +3,8 @@ import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.mixer.Mixer; import neqsim.processSimulation.processEquipment.mixer.StaticMixer; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -20,12 +20,11 @@ * @author Even Solbraa * @version $Id: $Id */ -public class FlowRateAdjuster extends ProcessEquipmentBaseClass { +public class FlowRateAdjuster extends TwoPortEquipment { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(Adjuster.class); - StreamInterface adjustedStream; - StreamInterface outletStream; + String name = "Flow Rate Adjuster"; public double desiredGasFlow; public double desiredOilFlow; @@ -61,7 +60,7 @@ public class FlowRateAdjuster extends ProcessEquipmentBaseClass { */ @Deprecated public FlowRateAdjuster() { - this("FlowRateAdjuster"); + this("Flow Rate Adjuster"); } /** @@ -75,14 +74,8 @@ public FlowRateAdjuster(String name) { super(name); } - /** - *

- * setAdjustedVariable. - *

- * - */ - public void setAdjustedStream(StreamInterface adjustedStream) { - this.adjustedStream = adjustedStream; + public FlowRateAdjuster(String name, StreamInterface inStream) { + super(name, inStream); } /** @@ -102,7 +95,7 @@ public void setAdjustedFlowRates(Double desiredGasFlow, Double desiredOilFlow, /** {@inheritDoc} */ @Override public void run(UUID id) { - SystemInterface adjustedFluid = adjustedStream.getFluid(); + SystemInterface adjustedFluid = inStream.getFluid(); ThermodynamicOperations thermoOps = new ThermodynamicOperations(adjustedFluid); try { thermoOps.TPflash(); @@ -122,8 +115,8 @@ public void run(UUID id) { double oilDensity = oilFluid.getDensity("kg/m3"); double waterDensity = waterFluid.getDensity("kg/m3"); - double temperature = adjustedStream.getTemperature("C"); - double pressure = adjustedStream.getPressure("bara"); + double temperature = inStream.getTemperature("C"); + double pressure = inStream.getPressure("bara"); Stream gasStream = new Stream("Gas Stream", gasFluid); gasStream.setTemperature(temperature, "C"); @@ -156,13 +149,10 @@ public void run(UUID id) { wellStramMixer.addStream(waterStream); wellStramMixer.run(); - outletStream = wellStramMixer.getOutletStream(); + outStream.setThermoSystem(wellStramMixer.getOutletStream().getFluid()); + outStream.run(); + outStream.setCalculationIdentifier(id); - setCalculationIdentifier(id); } - - public StreamInterface getOutletStream() { - return outletStream; - } } diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java index 45f607a32..f6699213a 100644 --- a/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java +++ b/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java @@ -5,7 +5,6 @@ import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills; import neqsim.processSimulation.processEquipment.stream.Stream; -import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.processSimulation.processEquipment.util.FlowRateAdjuster; import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.ThermodynamicConstantsInterface; @@ -77,7 +76,7 @@ public void testSetUnit() { testSystem.useVolumeCorrection(true); testSystem.setPressure(pressure, "bara"); testSystem.setTemperature(temperature, "C"); - testSystem.setTotalFlowRate(1000.0, "kg/hr"); + testSystem.setTotalFlowRate(100.0, "kg/hr"); testSystem.setMultiPhaseCheck(true); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); @@ -85,36 +84,12 @@ public void testSetUnit() { testSystem.initPhysicalProperties(); Stream stream_1 = new Stream("Stream1", testSystem); - stream_1.setFlowRate(1000.0, "kg/hr"); - - FlowRateAdjuster flowRateAdj = new FlowRateAdjuster("Flow rate adjuster"); - flowRateAdj.setAdjustedStream(stream_1); - flowRateAdj.setAdjustedFlowRates(41886.7, 88700.0, 22000.0, "kg/hr"); - flowRateAdj.run(); - - StreamInterface adjustedStream = flowRateAdj.getOutletStream(); - - double adjGasMass = adjustedStream.getFluid().getPhase("gas").getFlowRate("kg/hr"); - double adjOilMass = adjustedStream.getFluid().getPhase("oil").getFlowRate("kg/hr"); - double adjWaterMass = adjustedStream.getFluid().getPhase("aqueous").getFlowRate("kg/hr"); - - Assertions.assertEquals(adjGasMass, 41886.7, 0.05); - Assertions.assertEquals(adjOilMass, 88700.0, 0.05); - Assertions.assertEquals(adjWaterMass, 22000.0, 0.05); + stream_1.setFlowRate(100.0, "kg/hr"); + FlowRateAdjuster flowRateAdj = new FlowRateAdjuster("Flow rate adjuster", stream_1); flowRateAdj.setAdjustedFlowRates(gas_flow_rate, oil_flow_rate, water_flow_rate, "Sm3/hr"); - flowRateAdj.run(); - - StreamInterface adjustedStream2 = flowRateAdj.getOutletStream(); - double adjGasVol = adjustedStream2.getFluid().getPhase("gas").getFlowRate("Sm3/hr"); - double adjOilVol = adjustedStream2.getFluid().getPhase("oil").getFlowRate("m3/hr"); - double adjWaterVol = adjustedStream2.getFluid().getPhase("aqueous").getFlowRate("m3/hr"); - - Assertions.assertEquals(adjGasVol, gas_flow_rate, 0.05); - Assertions.assertEquals(adjOilVol, oil_flow_rate, 0.05); - Assertions.assertEquals(adjWaterVol, water_flow_rate, 0.05); - PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(adjustedStream2); + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(flowRateAdj.getOutStream()); pipe.setPipeWallRoughness(1e-6); pipe.setLength(25); pipe.setElevation(0.0); @@ -128,10 +103,12 @@ public void testSetUnit() { flowInducedVibrationAnalyserFRMS = new FlowInducedVibrationAnalyser("Flow Induced Vibrations Analyzer FRMS", pipe); flowInducedVibrationAnalyserFRMS.setMethod("FRMS"); + pipe.getOutletStream(); neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); operations.add(stream_1); + operations.add(flowRateAdj); operations.add(pipe); operations.add(flowInducedVibrationAnalyser); operations.add(flowInducedVibrationAnalyserFRMS);