diff --git a/neqsim/lib/java11/neqsim-2.5.35.jar b/neqsim/lib/java11/neqsim-2.5.35.jar index 8041a06..c6293ba 100644 Binary files a/neqsim/lib/java11/neqsim-2.5.35.jar and b/neqsim/lib/java11/neqsim-2.5.35.jar differ diff --git a/neqsim/lib/java8/neqsim-2.5.35-Java8.jar b/neqsim/lib/java8/neqsim-2.5.35-Java8.jar index 1ff6f44..ce46235 100644 Binary files a/neqsim/lib/java8/neqsim-2.5.35-Java8.jar and b/neqsim/lib/java8/neqsim-2.5.35-Java8.jar differ diff --git a/neqsim/process/processTools.py b/neqsim/process/processTools.py index 29c04b0..0ba3b32 100644 --- a/neqsim/process/processTools.py +++ b/neqsim/process/processTools.py @@ -19,8 +19,9 @@ def stream(thermoSystem, name="stream ?", t=0, p=0): thermoSystem.setTemperature(t) if p != 0: thermoSystem.setPressure(p) - stream = jNeqSim.processSimulation.processEquipment.stream.Stream(thermoSystem) - stream.setName(name) + stream = jNeqSim.processSimulation.processEquipment.stream.Stream( + name, thermoSystem + ) processoperations.add(stream) return stream @@ -38,14 +39,16 @@ def neqstream(thermoSystem, name="stream ?", t=0, p=0): thermoSystem.setTemperature(t) if p != 0: thermoSystem.setPressure(p) - stream = jNeqSim.processSimulation.processEquipment.stream.NeqStream(thermoSystem) + stream = jNeqSim.processSimulation.processEquipment.stream.NeqStream( + name, thermoSystem + ) stream.setName(name) processoperations.add(stream) return stream def recycle(teststream, name="recycle ?"): - recycle1 = jNeqSim.processSimulation.processEquipment.util.Recycle() + recycle1 = jNeqSim.processSimulation.processEquipment.util.Recycle(name) recycle1.addStream(teststream) processoperations.add(recycle1) return recycle1 @@ -53,7 +56,9 @@ def recycle(teststream, name="recycle ?"): def saturator(teststream, name="water saturator"): streamsaturator = ( - jNeqSim.processSimulation.processEquipment.util.StreamSaturatorUtil(teststream) + jNeqSim.processSimulation.processEquipment.util.StreamSaturatorUtil( + name, teststream + ) ) processoperations.add(streamsaturator) return streamsaturator @@ -61,9 +66,10 @@ def saturator(teststream, name="water saturator"): def glycoldehydrationlmodule(teststream, name="TEG process"): dehydrationlmodule = ( - jNeqSim.processSimulation.processSystem.processModules.GlycolDehydrationlModule() + jNeqSim.processSimulation.processSystem.processModules.GlycolDehydrationlModule( + name + ) ) - dehydrationlmodule.setName(name) dehydrationlmodule.addInputStream("gasStreamToAbsorber", teststream) processoperations.add(dehydrationlmodule) return dehydrationlmodule @@ -78,7 +84,7 @@ def openprocess(filename): def separator(teststream, name="separator ?"): separator = jNeqSim.processSimulation.processEquipment.separator.Separator( - teststream + name, teststream ) separator.setName(name) processoperations.add(separator) @@ -87,7 +93,7 @@ def separator(teststream, name="separator ?"): def GORfitter(teststream, name="GOR fitter ?"): GORfitter1 = jNeqSim.processSimulation.processEquipment.util.GORfitter( - name, teststream + name, name, teststream ) GORfitter1.setName(name) processoperations.add(GORfitter1) @@ -95,14 +101,18 @@ def GORfitter(teststream, name="GOR fitter ?"): def simpleTEGAbsorber(name="TEG absorber ?"): - absorber = jNeqSim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber() + absorber = jNeqSim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber( + name + ) absorber.setName(name) processoperations.add(absorber) return absorber def waterStripperColumn(name="water stripper ?"): - stripper = jNeqSim.processSimulation.processEquipment.absorber.WaterStripperColumn() + stripper = jNeqSim.processSimulation.processEquipment.absorber.WaterStripperColumn( + name + ) stripper.setName(name) processoperations.add(stripper) return stripper @@ -110,7 +120,7 @@ def waterStripperColumn(name="water stripper ?"): def gasscrubber(teststream, name="scrubber ?"): separator = jNeqSim.processSimulation.processEquipment.separator.GasScrubber( - teststream + name, teststream ) separator.setName(name) processoperations.add(separator) @@ -120,7 +130,7 @@ def gasscrubber(teststream, name="scrubber ?"): def separator3phase(teststream, name="separator ?"): separator = ( jNeqSim.processSimulation.processEquipment.separator.ThreePhaseSeparator( - teststream + name, teststream ) ) separator.setName(name) @@ -128,8 +138,10 @@ def separator3phase(teststream, name="separator ?"): return separator -def valve(teststream, p=1.0, name="valve ?"): - valve = jNeqSim.processSimulation.processEquipment.valve.ThrottlingValve(teststream) +def valve(teststream, p=1.0, name="valve ??"): + valve = jNeqSim.processSimulation.processEquipment.valve.ThrottlingValve( + name, teststream + ) valve.setOutletPressure(p) valve.setName(name) processoperations.add(valve) @@ -156,15 +168,15 @@ def setpoint(name1, unit1, name2, unit2): return setp -def filters(teststream): - filter2 = jNeqSim.processSimulation.processEquipment.filter.Filter(teststream) +def filters(teststream, name="filter?"): + filter2 = jNeqSim.processSimulation.processEquipment.filter.Filter(name, teststream) processoperations.add(filter2) return filter2 def compressor(teststream, pres=10.0, name="compressor ?"): compressor = jNeqSim.processSimulation.processEquipment.compressor.Compressor( - teststream + name, teststream ) compressor.setOutletPressure(pres) compressor.setName(name) @@ -207,7 +219,7 @@ def compressorStoneWallCurve(compressor, curveConditions, stoneWallflow, stoneWa def pump(teststream, p=1.0, name="pump ?"): - pump = jNeqSim.processSimulation.processEquipment.pump.Pump(teststream) + pump = jNeqSim.processSimulation.processEquipment.pump.Pump(name, teststream) pump.setOutletPressure(p) pump.setName(name) processoperations.add(pump) @@ -215,7 +227,9 @@ def pump(teststream, p=1.0, name="pump ?"): def expander(teststream, p, name="expander ?"): - expander = jNeqSim.processSimulation.processEquipment.expander.Expander(teststream) + expander = jNeqSim.processSimulation.processEquipment.expander.Expander( + name, teststream + ) expander.setOutletPressure(p) expander.setName(name) processoperations.add(expander) @@ -223,14 +237,14 @@ def expander(teststream, p, name="expander ?"): def mixer(name=""): - mixer = jNeqSim.processSimulation.processEquipment.mixer.Mixer() + mixer = jNeqSim.processSimulation.processEquipment.mixer.Mixer(name) mixer.setName(name) processoperations.add(mixer) return mixer def phasemixer(name=""): - mixer = jNeqSim.processSimulation.processEquipment.mixer.StaticPhaseMixer() + mixer = jNeqSim.processSimulation.processEquipment.mixer.StaticPhaseMixer(name) mixer.setName(name) processoperations.add(mixer) return mixer @@ -259,7 +273,9 @@ def compsplitter(teststream, splitfactors, name=""): def splitter(teststream, splitfactors=[], name=""): - splitter = jNeqSim.processSimulation.processEquipment.splitter.Splitter(teststream) + splitter = jNeqSim.processSimulation.processEquipment.splitter.Splitter( + name, teststream + ) if len(splitfactors) > 0: splitter.setSplitNumber(len(splitfactors)) splitter.setSplitFactors(JDouble[:](splitfactors)) @@ -268,8 +284,10 @@ def splitter(teststream, splitfactors=[], name=""): return splitter -def heater(teststream, name=""): - heater = jNeqSim.processSimulation.processEquipment.heatExchanger.Heater(teststream) +def heater(teststream, name="heater?"): + heater = jNeqSim.processSimulation.processEquipment.heatExchanger.Heater( + name, teststream + ) heater.setName(name) processoperations.add(heater) return heater @@ -288,8 +306,10 @@ def simplereservoir( return reserv -def cooler(teststream, name=""): - cooler = jNeqSim.processSimulation.processEquipment.heatExchanger.Cooler(teststream) +def cooler(teststream, name="cooler?"): + cooler = jNeqSim.processSimulation.processEquipment.heatExchanger.Cooler( + name, teststream + ) cooler.setName(name) processoperations.add(cooler) return cooler @@ -298,7 +318,7 @@ def cooler(teststream, name=""): def heatExchanger(stream1, stream2=None, name=""): if stream2 is None: heater = jNeqSim.processSimulation.processEquipment.heatExchanger.HeatExchanger( - stream1 + name, stream1 ) else: heater = jNeqSim.processSimulation.processEquipment.heatExchanger.HeatExchanger( @@ -312,7 +332,7 @@ def heatExchanger(stream1, stream2=None, name=""): def distillationColumn(trays=5, reboil=True, condenser=True, name="destColumn"): distillationColumn = ( jNeqSim.processSimulation.processEquipment.distillation.DistillationColumn( - trays, reboil, condenser + name, trays, reboil, condenser ) ) distillationColumn.setName(name) @@ -322,7 +342,7 @@ def distillationColumn(trays=5, reboil=True, condenser=True, name="destColumn"): def neqheater(teststream, name=""): neqheater = jNeqSim.processSimulation.processEquipment.heatExchanger.NeqHeater( - teststream + name, teststream ) neqheater.setName(name) processoperations.add(neqheater) @@ -331,7 +351,7 @@ def neqheater(teststream, name=""): def twophasepipe(teststream, position, diameter, height, outTemp, rough): pipe = jNeqSim.processSimulation.processEquipment.pipeline.TwoPhasePipeLine( - teststream + name, teststream ) pipe.setOutputFileName("c:/tempNew20.nc") pipe.setInitialFlowPattern("annular") @@ -351,7 +371,9 @@ def twophasepipe(teststream, position, diameter, height, outTemp, rough): def pipe(teststream, length, deltaElevation, diameter, rough): - pipe = jNeqSim.processSimulation.processEquipment.pipeline.AdiabaticPipe(teststream) + pipe = jNeqSim.processSimulation.processEquipment.pipeline.AdiabaticPipe( + name, teststream + ) pipe.setDiameter(diameter) pipe.setLength(length) pipe.setPipeWallRoughness(rough) @@ -373,7 +395,7 @@ def pipeline( numberOfNodesInLeg=50, ): pipe = jNeqSim.processSimulation.processEquipment.pipeline.OnePhasePipeLine( - teststream + name, teststream ) pipe.setOutputFileName("c:/tempNew20.nc") numberOfLegs = len(position) - 1 diff --git a/neqsim/process/unitop.py b/neqsim/process/unitop.py index 9f3fdb2..626afe2 100644 --- a/neqsim/process/unitop.py +++ b/neqsim/process/unitop.py @@ -118,11 +118,11 @@ def getConditionAnalysisMessage(self): # Add the logic to calculate or retrieve the pressure. # This will depend on how pressure is handled in your 'unitop' class. return 0.0 # Replace 0.0 with the actual pressure value or calculatio - + @JOverride # Implement the missing 'needRecalculation' method - def needRecalculation(): - return True - + def needRecalculation(): + return True + @JOverride # Implement the missing 'getExergyChange' method def getResultTable(self): # Add the logic to calculate or retrieve the pressure. diff --git a/tests/process/test_ProcessTools.py b/tests/process/test_ProcessTools.py index 7dca80c..d00f4e9 100644 --- a/tests/process/test_ProcessTools.py +++ b/tests/process/test_ProcessTools.py @@ -87,11 +87,11 @@ def test_runProcessAsThread(): fluid1.addComponent("water", 50e-6, "mol/sec") fluid1.setMixingRule(2) clearProcess() - stream1 = stream(fluid1) + stream1 = stream(fluid1, name="stream1") waterDewPoint = waterDewPointAnalyser(stream1) - stream2 = stream(fluid1) + stream2 = stream(fluid1, name="stream2") waterDewPoint2 = waterDewPointAnalyser(stream2) - stream3 = stream(fluid1) + stream3 = stream(fluid1, name="stream3") waterDewPoint3 = waterDewPointAnalyser(stream3) processThread = runProcessAsThread() # assert waterDewPoint2.getMeasuredValue('C') != approx(-11.828217379989212, rel= 0.001) @@ -135,31 +135,33 @@ def test_flowSplitter(): stream1.setTemperature(temperature_inlet, "C") stream1.setFlowRate(gasFlowRate, "MSm3/day") - streamresycl = stream(stream1.getFluid().clone()) + streamresycl = stream(stream1.getFluid().clone(), name="stream1") streamresycl.setFlowRate(0.1, "MSm3/day") - mixerStream = mixer() + mixerStream = mixer(name="mixer1") mixerStream.addStream(stream1) mixerStream.addStream(streamresycl) - compressor_1 = compressor(mixerStream.getOutletStream(), pressure_outlet) + compressor_1 = compressor( + mixerStream.getOutletStream(), pressure_outlet, name="comp1" + ) - stream2 = stream(compressor_1.getOutStream()) + stream2 = stream(compressor_1.getOutStream(), name="stre333") - streamSplit = splitter(stream2) + streamSplit = splitter(stream2, name="split1") streamSplit.setFlowRates(JDouble[:]([5.0, 0.1]), "MSm3/day") resycStream1 = streamSplit.getSplitStream(1) - valve1 = valve(resycStream1) + valve1 = valve(resycStream1, name="valv1") valve1.setOutletPressure(pressure_inlet, "bara") - resycleOp = recycle2() + resycleOp = recycle2(name="rec1") resycleOp.addStream(valve1.getOutletStream()) resycleOp.setOutletStream(streamresycl) resycleOp.setFlowAccuracy(1e-4) - exportStream = stream(streamSplit.getSplitStream(0)) + exportStream = stream(streamSplit.getSplitStream(0), name="stre3") runProcess() assert exportStream.getFlowRate("MSm3/day") == approx(5.0) assert streamresycl.getFlowRate("MSm3/day") == approx(0.1) @@ -185,9 +187,9 @@ def test_virtualstream(): fluid1.addComponent("methane", 1.0) clearProcess() - stream1 = stream(fluid1) + stream1 = stream(fluid1, name="str1") stream1.setFlowRate(3.1, "MSm3/day") - vstream = virtualstream(stream1) + vstream = virtualstream(stream1, name="str2") vstream.setFlowRate(1.1, "MSm3/day") vstream.setTemperature(25.0, "C") vstream.setPressure(25.0, "bara") @@ -365,23 +367,23 @@ def test_gasoilprocess(): Oilheater1.setOutTemperature(359.15) separator2 = separator3phase(Oilheater1.getOutStream(), "MP separator") valve2 = valve(separator2.getOilOutStream(), LPpressure) - recirc1stream = stream(valve2.getOutletStream().clone()) - recirc2stream = stream(valve2.getOutletStream().clone()) - recirc3stream = stream(valve2.getOutletStream().clone()) + recirc1stream = stream(valve2.getOutletStream().clone(), name="str1") + recirc2stream = stream(valve2.getOutletStream().clone(), name="str2") + recirc3stream = stream(valve2.getOutletStream().clone(), name="str3") separator3 = separator3phase(valve2.getOutletStream(), "LP separator") separator3.addStream(recirc1stream) separator3.addStream(recirc2stream) separator3.addStream(recirc3stream) # 1st stg compressor - pipeloss1st = valve(separator3.getGasOutStream(), P_1st_comp) - coolerLP1 = heater(pipeloss1st.getOutletStream()) + pipeloss1st = valve(separator3.getGasOutStream(), P_1st_comp, name="vlv1") + coolerLP1 = heater(pipeloss1st.getOutletStream(), name="cooler1") coolerLP1.setOutTemperature(298.15) - scrubberLP1 = separator(coolerLP1.getOutletStream()) - compressorLP1 = compressor(scrubberLP1.getGasOutStream()) + scrubberLP1 = separator(coolerLP1.getOutletStream(), name="sep1") + compressorLP1 = compressor(scrubberLP1.getGasOutStream(), name="comp1") # Recycle for liquid from 1st stage scrubber - pumpLP = pump(scrubberLP1.getLiquidOutStream()) + pumpLP = pump(scrubberLP1.getLiquidOutStream(), name="pump1") pumpLP.setOutletPressure(MPpressure) valveR1 = valve(pumpLP.getOutletStream(), LPpressure, "1st scr liq") recycleLP = recycle2("recycleLP") @@ -389,10 +391,10 @@ def test_gasoilprocess(): recycleLP.setOutletStream(recirc1stream) # 2nd stg compressor - coolerMP1 = heater(compressorLP1.getOutStream()) + coolerMP1 = heater(compressorLP1.getOutStream(), name="ht1") coolerMP1.setOutTemperature(325.15) - scrubberMP1 = separator(coolerMP1.getOutStream()) - compressorMP1 = compressor(scrubberMP1.getGasOutStream()) + scrubberMP1 = separator(coolerMP1.getOutStream(), name="sep11") + compressorMP1 = compressor(scrubberMP1.getGasOutStream(), name="comp221") compressorMP1.setOutletPressure(MPpressure) compressorMP1.setPolytropicEfficiency(0.78) @@ -406,11 +408,11 @@ def test_gasoilprocess(): # model is to derive gas composition into 3rd stage and then perform more detailed # calculation on 3rd stage compressor mixerMP = mixer() - mixerMP.addStream(compressorMP1.getOutStream()) - mixerMP.addStream(separator2.getGasOutStream()) - cooler3rd = heater(mixerMP.getOutStream()) + mixerMP.addStream(compressorMP1.getOutStream(), name="se1") + mixerMP.addStream(separator2.getGasOutStream(), name="se2") + cooler3rd = heater(mixerMP.getOutStream(), name="he1") cooler3rd.setOutTemperature(317.15) - scrubber3rd = separator(cooler3rd.getOutStream()) + scrubber3rd = separator(cooler3rd.getOutStream(), name="ss1") # Recycle for liquid from 2nd stage scrubber valveR3 = valve(scrubber3rd.getLiquidOutStream(), LPpressure, "3re scr liq") diff --git a/tests/process/test_dynamic_process.py b/tests/process/test_dynamic_process.py index 94dc700..6dfd3be 100644 --- a/tests/process/test_dynamic_process.py +++ b/tests/process/test_dynamic_process.py @@ -31,7 +31,7 @@ def test_dynamic_compressor(): separator1.setLiquidLevel(0.0) compressor1 = jNeqSim.processSimulation.processEquipment.compressor.Compressor( - separator1.getGasOutStream() + "comp1", separator1.getGasOutStream() ) compressor1.setCalculateSteadyState(False) compressor1.setOutletPressure(100.0) diff --git a/tests/process/test_measurement.py b/tests/process/test_measurement.py index 0c230db..ac5554a 100644 --- a/tests/process/test_measurement.py +++ b/tests/process/test_measurement.py @@ -32,7 +32,9 @@ def test_addPythonUnitOp(): fluid1.addComponent("n-hexane", 1.0, "kg/sec") fluid1.setMixingRule(2) - stream1 = jNeqSim.processSimulation.processEquipment.stream.Stream(fluid1) + stream1 = jNeqSim.processSimulation.processEquipment.stream.Stream( + "stream1", fluid1 + ) stream1.setFlowRate(30000, "kg/hr") meas1 = ExampleMeasurement() diff --git a/tests/process/test_unitop.py b/tests/process/test_unitop.py index 64d0464..067a427 100644 --- a/tests/process/test_unitop.py +++ b/tests/process/test_unitop.py @@ -12,9 +12,9 @@ class ExampleCompressor(unitop): - def __init__(self): + def __init__(self, name): super().__init__() - self.name = "" + self.name = name self.inputstream = None self.outputstream = None @@ -42,15 +42,17 @@ def test_addPythonUnitOp(): fluid1.addComponent("n-hexane", 1.0, "kg/sec") fluid1.setMixingRule(2) - stream1 = jNeqSim.processSimulation.processEquipment.stream.Stream(fluid1) + stream1 = jNeqSim.processSimulation.processEquipment.stream.Stream( + "stream 1", fluid1 + ) stream1.setFlowRate(30000, "kg/hr") - uop = ExampleCompressor() + uop = ExampleCompressor(name="compressor 1") uop.setName("example operation 1") uop.setInputStream(stream1) stream2 = jNeqSim.processSimulation.processEquipment.stream.Stream( - uop.getOutputStream() + "stream2", uop.getOutputStream() ) oilprocess = jNeqSim.processSimulation.processSystem.ProcessSystem() diff --git a/tests/test_NeqSim.py b/tests/test_NeqSim.py index 1c7cf6f..092b25a 100644 --- a/tests/test_NeqSim.py +++ b/tests/test_NeqSim.py @@ -174,15 +174,17 @@ def test_fullOffshoreProcess(): oilHeaterFromFirstStage.setName("oil heater second stage") oilHeaterFromFirstStage.setOutTemperature(inputdata["temperatureOilHeater"], "C") - oilThrotValve = valve(oilHeaterFromFirstStage.getOutStream()) - oilThrotValve.setName("valve oil from first stage") + oilThrotValve = valve( + oilHeaterFromFirstStage.getOutStream(), name="valve oil from first stage" + ) oilThrotValve.setOutletPressure(inputdata["secondStagePressure"]) secondStageSeparator = separator3phase(oilThrotValve.getOutStream()) secondStageSeparator.setName("2nd stage separator") - oilThrotValve2 = valve(secondStageSeparator.getOilOutStream()) - oilThrotValve2.setName("valve oil from second stage") + oilThrotValve2 = valve( + secondStageSeparator.getOilOutStream(), name="valve oil from second stage" + ) oilThrotValve2.setOutletPressure(inputdata["thirdStagePressure"]) thirdStageSeparator = separator3phase(oilThrotValve2.getOutStream()) @@ -287,14 +289,14 @@ def test_fullOffshoreProcess(): watersplitter = compsplitter(inletValve.getOutStream(), splitFactors) - coolerInlet = cooler(watersplitter.getSplitStream(0)) + coolerInlet = cooler(watersplitter.getSplitStream(0), name="cooler 11") coolerInlet.setOutTemperature(-20.0, "C") expanderKarsto = expander(coolerInlet.getOutStream(), pressureNGL) scrubberNGL = separator(expanderKarsto.getOutStream()) - gasHeater = heater(scrubberNGL.getGasOutStream()) + gasHeater = heater(scrubberNGL.getGasOutStream(), name="heater1") gasHeater.setOutTemperature(20.0) exportCompressor = compressor(gasHeater.getOutStream())