From b327341007a42f765f377863de8877c28ecbb480 Mon Sep 17 00:00:00 2001 From: EvenSol Date: Wed, 13 Apr 2022 11:13:05 +0200 Subject: [PATCH 1/6] added improved TEG in gas calculation --- .../absorber/SimpleTEGAbsorber.java | 134 ++++++++++++++++++ .../processSystem/ProcessSystemTest.java | 24 ++-- 2 files changed, 147 insertions(+), 11 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index 875dbbc91..e09c932ce 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -291,6 +291,33 @@ public double calcY0() { return y0; } + /** + *

+ * calcY0TEG. + *

+ * + * @return a double + */ + public double calcY0TEG() { + // double fugacityWaterLiquid = + // mixedStream.getThermoSystem().getPhase(1).getFugacity("water"); + // double xrel = + // mixedStream.getFluid().getPhase(0).getComponent("water").getx()/solventInStream.getFluid().getPhase(0).getComponent("water").getx(); + // double y0 = + // xrel*fugacityWaterLiquid/(mixedStream.getFluid().getPhase(0).getComponent("water").getFugacityCoefficient()*mixedStream.getFluid().getPressure()); + //double oldTemp = mixedStream.getTemperature(); + //mixedStream.setTemperature(solventInStream.getTemperature(),"K"); + //mixedStream.getFluid().init(1); + double fugCoefRef = mixedStream.getThermoSystem().getPhase(1).getComponent("TEG") + .getFugacityCoefficient(); + double y0TEG = solventInStream.getFluid().getPhase(0).getComponent("TEG").getx() * fugCoefRef + / (mixedStream.getThermoSystem().getPhase(0).getComponent("TEG") + .getFugacityCoefficient()); + //mixedStream.setTemperature(oldTemp, "K"); + //mixedStream.getFluid().init(2); + return y0TEG; + } + /** *

* calcNumberOfTheoreticalStages. @@ -600,4 +627,111 @@ public void setWaterInDryGas(double waterInDryGasInput) { public void isSetWaterInDryGas(boolean isSetwaterInDryGas) { this.isSetWaterInDryGas = isSetwaterInDryGas; } + + + /** {@inheritDoc} */ + @Override + public void run() { + try { + double y0 = 0.0, y1 = 0.0, y0TEG=0.0; + // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + double absorptionEffiency = 0.0; + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().reInitPhaseType(); + mixedStream.getThermoSystem().init(0); + mixStream(); + // System.out.println("feed total number of water " + + // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + double enthalpy = calcMixStreamEnthalpy(); + //// System.out.println("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + ThermodynamicOperations testOps = + new ThermodynamicOperations(mixedStream.getThermoSystem()); + testOps.TPflash(); + testOps.PHflash(enthalpy, 0); + + kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() + / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); + + calcNumberOfTheoreticalStages(); + // System.out.println("number of theoretical stages " + + // getNumberOfTheoreticalStages()); + absorptionEffiency = calcEa(); + + y0 = calcY0(); + y0TEG = calcY0TEG(); + y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() + - absorptionEffiency * (gasInStream.getThermoSystem().getPhase(0) + .getComponent("water").getx() - y0); + + double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + double molesWaterToMove = (yMean - y1) + * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + double yMeanTEG = mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getx(); + double molesTEGToMove = (y0TEG-yMeanTEG) + * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + + // System.out.println("Lean TEG to absorber " + // +solventInStream.getFlowRate("kg/hr")); + + // System.out.println("mole water to move " + molesWaterToMove); + // System.out.println("total moles water in gas " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); + // System.out.println("total moles water " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); + StreamInterface stream = mixedStream.clone(); + stream.setName("test"); + stream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); + stream.getThermoSystem().addComponent("water", molesWaterToMove, 1); + stream.getThermoSystem().addComponent("TEG", molesTEGToMove, 0); + stream.getThermoSystem().addComponent("TEG", -molesTEGToMove, 1); + stream.getThermoSystem().initBeta(); + stream.getThermoSystem().init_x_y(); + stream.getThermoSystem().init(2); + mixedStream = stream; + + // stream.getThermoSystem().display(); + + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); + gasTemp.init(2); + gasOutStream.setThermoSystem(gasTemp); + // System.out.println("gas total number of water " + + // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); + liqTemp.init(2); + solventOutStream.setThermoSystem(liqTemp); + // System.out.println("solvent total number of water " + + // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + setNTU(calcNTU(y0, y1, + gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), yMean)); + // System.out.println("NTU " + getNTU()); + + // double Ks = 0.055; + getSolventOutStream().getThermoSystem().initPhysicalProperties(); + getGasOutStream().getThermoSystem().initPhysicalProperties(); + + // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) + // .getPhysicalProperties().getDensity() - + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()) / + // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); + + // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * + // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()/ 3.14 / vtemp); + // System.out.println("diameter " + d); + } catch (Exception e) { + e.printStackTrace(); + } + // System.out.println("rich TEG from absorber " + + // getSolventOutStream().getFlowRate("kg/hr")); + } + + } diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java index f2e9d09bb..78795c05b 100644 --- a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java @@ -376,7 +376,7 @@ public void runTEGProcessTest() { new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); HeatExchanger heatEx2 = - new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutStream()); heatEx2.setGuessOutTemperature(273.15 + 62.0); heatEx2.setUAvalue(200.0); @@ -390,11 +390,11 @@ public void runTEGProcessTest() { Filter fineFilter = new Filter("TEG fine filter", flashLiquid); fineFilter.setDeltaP(0.05, "bara"); - Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); + Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutStream()); carbonFilter.setDeltaP(0.01, "bara"); HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); + new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutStream()); heatEx.setGuessOutTemperature(273.15 + 130.0); heatEx.setUAvalue(390.0); @@ -417,7 +417,7 @@ public void runTEGProcessTest() { DistillationColumn column = new DistillationColumn(1, true, true); column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); + column.addFeedStream(glycol_flash_valve2.getOutStream(), 0); column.getReboiler().setOutTemperature(273.15 + 201.0); column.getCondenser().setOutTemperature(273.15 + 92.0); column.getReboiler().addStream(gasToReboiler); @@ -427,7 +427,7 @@ public void runTEGProcessTest() { Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); coolerRegenGas.setOutTemperature(273.15 + 7.5); - Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutStream()); Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); @@ -450,25 +450,25 @@ public void runTEGProcessTest() { Heater bufferTank = new Heater("TEG buffer tank", stripper.getLiquidOutStream()); bufferTank.setOutTemperature(273.15 + 191.0); - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutStream());// stripper.getSolventOutStream()); hotLeanTEGPump.setOutletPressure(5.0); hotLeanTEGPump.setIsentropicEfficiency(0.6); - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + heatEx.setFeedStream(1, hotLeanTEGPump.getOutStream()); heatEx2.setFeedStream(1, heatEx.getOutStream(1)); Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); coolerhOTteg3.setOutTemperature(273.15 + 35.41); - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutStream()); hotLeanTEGPump2.setOutletPressure(87.2); hotLeanTEGPump2.setIsentropicEfficiency(0.75); SetPoint pumpHPPresSet = new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutStream()); neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); pureTEG.setMolarComposition( @@ -491,7 +491,7 @@ public void runTEGProcessTest() { makeupMixer.addStream(makeupTEG); Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.addStream(makeupMixer.getOutStream()); resycleLeanTEG.setOutletStream(TEGFeed); resycleLeanTEG.setPriority(200); resycleLeanTEG.setDownstreamProperty("flow rate"); @@ -542,6 +542,8 @@ public void runTEGProcessTest() { operations.add(makeupTEG); operations.add(makeupMixer); operations.add(resycleLeanTEG); - // operations.run(); + operations.run(); + dehydratedGas.getFluid().display(); + dehydratedGas.getFluid().display(); } } From 987334aaa1342dc472c2aa97dffe57b67d324662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Fri, 22 Jul 2022 13:39:29 +0200 Subject: [PATCH 2/6] deprecations --- .../processSystem/ProcessSystemTest.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java index 78795c05b..ec2c75e4f 100644 --- a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java @@ -376,7 +376,7 @@ public void runTEGProcessTest() { new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); HeatExchanger heatEx2 = - new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutStream()); + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); heatEx2.setGuessOutTemperature(273.15 + 62.0); heatEx2.setUAvalue(200.0); @@ -390,11 +390,11 @@ public void runTEGProcessTest() { Filter fineFilter = new Filter("TEG fine filter", flashLiquid); fineFilter.setDeltaP(0.05, "bara"); - Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutStream()); + Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); carbonFilter.setDeltaP(0.01, "bara"); HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutStream()); + new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); heatEx.setGuessOutTemperature(273.15 + 130.0); heatEx.setUAvalue(390.0); @@ -417,7 +417,7 @@ public void runTEGProcessTest() { DistillationColumn column = new DistillationColumn(1, true, true); column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutStream(), 0); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); column.getReboiler().setOutTemperature(273.15 + 201.0); column.getCondenser().setOutTemperature(273.15 + 92.0); column.getReboiler().addStream(gasToReboiler); @@ -427,7 +427,7 @@ public void runTEGProcessTest() { Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); coolerRegenGas.setOutTemperature(273.15 + 7.5); - Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutStream()); + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); @@ -450,25 +450,25 @@ public void runTEGProcessTest() { Heater bufferTank = new Heater("TEG buffer tank", stripper.getLiquidOutStream()); bufferTank.setOutTemperature(273.15 + 191.0); - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutStream());// stripper.getSolventOutStream()); + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); hotLeanTEGPump.setOutletPressure(5.0); hotLeanTEGPump.setIsentropicEfficiency(0.6); - heatEx.setFeedStream(1, hotLeanTEGPump.getOutStream()); + heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); heatEx2.setFeedStream(1, heatEx.getOutStream(1)); Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); coolerhOTteg3.setOutTemperature(273.15 + 35.41); - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutStream()); + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); hotLeanTEGPump2.setOutletPressure(87.2); hotLeanTEGPump2.setIsentropicEfficiency(0.75); SetPoint pumpHPPresSet = new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutStream()); + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); pureTEG.setMolarComposition( @@ -491,7 +491,7 @@ public void runTEGProcessTest() { makeupMixer.addStream(makeupTEG); Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutStream()); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); resycleLeanTEG.setOutletStream(TEGFeed); resycleLeanTEG.setPriority(200); resycleLeanTEG.setDownstreamProperty("flow rate"); From 8b0965820ccb2ed751c9b46311736d8e80ae7491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Fri, 22 Jul 2022 13:45:48 +0200 Subject: [PATCH 3/6] simplify looking for changes --- .../absorber/SimpleTEGAbsorber.java | 261 +++++++++--------- 1 file changed, 128 insertions(+), 133 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index e09c932ce..427125c71 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -291,31 +291,30 @@ public double calcY0() { return y0; } - /** - *

- * calcY0TEG. - *

- * - * @return a double - */ - public double calcY0TEG() { - // double fugacityWaterLiquid = - // mixedStream.getThermoSystem().getPhase(1).getFugacity("water"); - // double xrel = - // mixedStream.getFluid().getPhase(0).getComponent("water").getx()/solventInStream.getFluid().getPhase(0).getComponent("water").getx(); - // double y0 = - // xrel*fugacityWaterLiquid/(mixedStream.getFluid().getPhase(0).getComponent("water").getFugacityCoefficient()*mixedStream.getFluid().getPressure()); - //double oldTemp = mixedStream.getTemperature(); - //mixedStream.setTemperature(solventInStream.getTemperature(),"K"); - //mixedStream.getFluid().init(1); - double fugCoefRef = mixedStream.getThermoSystem().getPhase(1).getComponent("TEG") - .getFugacityCoefficient(); - double y0TEG = solventInStream.getFluid().getPhase(0).getComponent("TEG").getx() * fugCoefRef - / (mixedStream.getThermoSystem().getPhase(0).getComponent("TEG") - .getFugacityCoefficient()); - //mixedStream.setTemperature(oldTemp, "K"); - //mixedStream.getFluid().init(2); - return y0TEG; + /** + *

+ * calcY0TEG. + *

+ * + * @return a double + */ + public double calcY0TEG() { + // double fugacityWaterLiquid = + // mixedStream.getThermoSystem().getPhase(1).getFugacity("water"); + // double xrel = + // mixedStream.getFluid().getPhase(0).getComponent("water").getx()/solventInStream.getFluid().getPhase(0).getComponent("water").getx(); + // double y0 = + // xrel*fugacityWaterLiquid/(mixedStream.getFluid().getPhase(0).getComponent("water").getFugacityCoefficient()*mixedStream.getFluid().getPressure()); + // double oldTemp = mixedStream.getTemperature(); + // mixedStream.setTemperature(solventInStream.getTemperature(),"K"); + // mixedStream.getFluid().init(1); + double fugCoefRef = + mixedStream.getThermoSystem().getPhase(1).getComponent("TEG").getFugacityCoefficient(); + double y0TEG = solventInStream.getFluid().getPhase(0).getComponent("TEG").getx() * fugCoefRef + / (mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getFugacityCoefficient()); + // mixedStream.setTemperature(oldTemp, "K"); + // mixedStream.getFluid().init(2); + return y0TEG; } /** @@ -345,6 +344,109 @@ public double calcNTU(double y0, double y1, double yb, double ymix) { return Math.log((yb - ymix) / (y1 - y0)); } + /** {@inheritDoc} */ + @Override + public void run() { + try { + double y0 = 0.0, y1 = 0.0, y0TEG = 0.0; + // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + double absorptionEffiency = 0.0; + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().reInitPhaseType(); + mixedStream.getThermoSystem().init(0); + mixStream(); + // System.out.println("feed total number of water " + + // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + double enthalpy = calcMixStreamEnthalpy(); + //// System.out.println("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + ThermodynamicOperations testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); + testOps.TPflash(); + testOps.PHflash(enthalpy, 0); + + kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() + / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); + + calcNumberOfTheoreticalStages(); + // System.out.println("number of theoretical stages " + + // getNumberOfTheoreticalStages()); + absorptionEffiency = calcEa(); + + y0 = calcY0(); + y0TEG = calcY0TEG(); + y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() + - absorptionEffiency + * (gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0); + + double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + double molesWaterToMove = + (yMean - y1) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + double yMeanTEG = mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getx(); + double molesTEGToMove = + (y0TEG - yMeanTEG) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + + // System.out.println("Lean TEG to absorber " + // +solventInStream.getFlowRate("kg/hr")); + + // System.out.println("mole water to move " + molesWaterToMove); + // System.out.println("total moles water in gas " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); + // System.out.println("total moles water " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); + StreamInterface newMixedStream = mixedStream.clone(); + newMixedStream.setName("test"); + newMixedStream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); + newMixedStream.getThermoSystem().addComponent("water", molesWaterToMove, 1); + newMixedStream.getThermoSystem().addComponent("TEG", molesTEGToMove, 0); + newMixedStream.getThermoSystem().addComponent("TEG", -molesTEGToMove, 1); + newMixedStream.getThermoSystem().initBeta(); + newMixedStream.getThermoSystem().init_x_y(); + newMixedStream.getThermoSystem().init(2); + mixedStream = newMixedStream; + + // stream.getThermoSystem().display(); + + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); + gasTemp.init(2); + gasOutStream.setThermoSystem(gasTemp); + // System.out.println("gas total number of water " + + // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); + liqTemp.init(2); + solventOutStream.setThermoSystem(liqTemp); + // System.out.println("solvent total number of water " + + // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + setNTU(calcNTU(y0, y1, gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), + yMean)); + // System.out.println("NTU " + getNTU()); + + // double Ks = 0.055; + getSolventOutStream().getThermoSystem().initPhysicalProperties(); + getGasOutStream().getThermoSystem().initPhysicalProperties(); + + // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) + // .getPhysicalProperties().getDensity() - + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()) / + // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); + + // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * + // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()/ 3.14 / vtemp); + // System.out.println("diameter " + d); + } catch (Exception e) { + e.printStackTrace(); + } + // System.out.println("rich TEG from absorber " + + // getSolventOutStream().getFlowRate("kg/hr")); + } + /** {@inheritDoc} */ @Override public void run(UUID id) { @@ -616,7 +718,7 @@ public void runConditionAnalysis(ProcessEquipmentInterface refTEGabsorberloc) { *

* Setter for the field waterInDryGas. *

- * + * * @param waterInDryGasInput water in dry gas */ public void setWaterInDryGas(double waterInDryGasInput) { @@ -627,111 +729,4 @@ public void setWaterInDryGas(double waterInDryGasInput) { public void isSetWaterInDryGas(boolean isSetwaterInDryGas) { this.isSetWaterInDryGas = isSetwaterInDryGas; } - - - /** {@inheritDoc} */ - @Override - public void run() { - try { - double y0 = 0.0, y1 = 0.0, y0TEG=0.0; - // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double absorptionEffiency = 0.0; - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixStream(); - // System.out.println("feed total number of water " + - // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - double enthalpy = calcMixStreamEnthalpy(); - //// System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - ThermodynamicOperations testOps = - new ThermodynamicOperations(mixedStream.getThermoSystem()); - testOps.TPflash(); - testOps.PHflash(enthalpy, 0); - - kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() - / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); - - calcNumberOfTheoreticalStages(); - // System.out.println("number of theoretical stages " + - // getNumberOfTheoreticalStages()); - absorptionEffiency = calcEa(); - - y0 = calcY0(); - y0TEG = calcY0TEG(); - y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - - absorptionEffiency * (gasInStream.getThermoSystem().getPhase(0) - .getComponent("water").getx() - y0); - - double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double molesWaterToMove = (yMean - y1) - * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); - double yMeanTEG = mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getx(); - double molesTEGToMove = (y0TEG-yMeanTEG) - * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); - - // System.out.println("Lean TEG to absorber " - // +solventInStream.getFlowRate("kg/hr")); - - // System.out.println("mole water to move " + molesWaterToMove); - // System.out.println("total moles water in gas " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); - // System.out.println("total moles water " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); - StreamInterface stream = mixedStream.clone(); - stream.setName("test"); - stream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); - stream.getThermoSystem().addComponent("water", molesWaterToMove, 1); - stream.getThermoSystem().addComponent("TEG", molesTEGToMove, 0); - stream.getThermoSystem().addComponent("TEG", -molesTEGToMove, 1); - stream.getThermoSystem().initBeta(); - stream.getThermoSystem().init_x_y(); - stream.getThermoSystem().init(2); - mixedStream = stream; - - // stream.getThermoSystem().display(); - - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); - gasTemp.init(2); - gasOutStream.setThermoSystem(gasTemp); - // System.out.println("gas total number of water " + - // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); - liqTemp.init(2); - solventOutStream.setThermoSystem(liqTemp); - // System.out.println("solvent total number of water " + - // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - setNTU(calcNTU(y0, y1, - gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), yMean)); - // System.out.println("NTU " + getNTU()); - - // double Ks = 0.055; - getSolventOutStream().getThermoSystem().initPhysicalProperties(); - getGasOutStream().getThermoSystem().initPhysicalProperties(); - - // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) - // .getPhysicalProperties().getDensity() - - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()) / - // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); - - // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * - // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()/ 3.14 / vtemp); - // System.out.println("diameter " + d); - } catch (Exception e) { - e.printStackTrace(); - } - // System.out.println("rich TEG from absorber " + - // getSolventOutStream().getFlowRate("kg/hr")); - } - - } From 39865e6a7dc7928be0cea3715e5822514cc5d57d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Fri, 22 Jul 2022 13:46:49 +0200 Subject: [PATCH 4/6] fix --- .../processEquipment/absorber/SimpleTEGAbsorber.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index 427125c71..a0cf04a55 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -348,9 +348,8 @@ public double calcNTU(double y0, double y1, double yb, double ymix) { @Override public void run() { try { - double y0 = 0.0, y1 = 0.0, y0TEG = 0.0; + double y1 = 0.0; // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double absorptionEffiency = 0.0; mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); mixedStream.getThermoSystem().setNumberOfPhases(2); mixedStream.getThermoSystem().reInitPhaseType(); @@ -371,10 +370,10 @@ public void run() { calcNumberOfTheoreticalStages(); // System.out.println("number of theoretical stages " + // getNumberOfTheoreticalStages()); - absorptionEffiency = calcEa(); + double absorptionEffiency = calcEa(); - y0 = calcY0(); - y0TEG = calcY0TEG(); + double y0 = calcY0(); + double y0TEG = calcY0TEG(); y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - absorptionEffiency * (gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0); From c03b336a48ce2670d5eb84cef9c044030727916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Fri, 22 Jul 2022 13:56:14 +0200 Subject: [PATCH 5/6] fully merged --- .../absorber/SimpleTEGAbsorber.java | 109 ++---------------- 1 file changed, 8 insertions(+), 101 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index a0cf04a55..cbac8695a 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -344,107 +344,6 @@ public double calcNTU(double y0, double y1, double yb, double ymix) { return Math.log((yb - ymix) / (y1 - y0)); } - /** {@inheritDoc} */ - @Override - public void run() { - try { - double y1 = 0.0; - // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixStream(); - // System.out.println("feed total number of water " + - // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - double enthalpy = calcMixStreamEnthalpy(); - //// System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - ThermodynamicOperations testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); - testOps.TPflash(); - testOps.PHflash(enthalpy, 0); - - kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() - / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); - - calcNumberOfTheoreticalStages(); - // System.out.println("number of theoretical stages " + - // getNumberOfTheoreticalStages()); - double absorptionEffiency = calcEa(); - - double y0 = calcY0(); - double y0TEG = calcY0TEG(); - y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - - absorptionEffiency - * (gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0); - - double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double molesWaterToMove = - (yMean - y1) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); - double yMeanTEG = mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getx(); - double molesTEGToMove = - (y0TEG - yMeanTEG) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); - - // System.out.println("Lean TEG to absorber " - // +solventInStream.getFlowRate("kg/hr")); - - // System.out.println("mole water to move " + molesWaterToMove); - // System.out.println("total moles water in gas " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); - // System.out.println("total moles water " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); - StreamInterface newMixedStream = mixedStream.clone(); - newMixedStream.setName("test"); - newMixedStream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); - newMixedStream.getThermoSystem().addComponent("water", molesWaterToMove, 1); - newMixedStream.getThermoSystem().addComponent("TEG", molesTEGToMove, 0); - newMixedStream.getThermoSystem().addComponent("TEG", -molesTEGToMove, 1); - newMixedStream.getThermoSystem().initBeta(); - newMixedStream.getThermoSystem().init_x_y(); - newMixedStream.getThermoSystem().init(2); - mixedStream = newMixedStream; - - // stream.getThermoSystem().display(); - - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); - gasTemp.init(2); - gasOutStream.setThermoSystem(gasTemp); - // System.out.println("gas total number of water " + - // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); - liqTemp.init(2); - solventOutStream.setThermoSystem(liqTemp); - // System.out.println("solvent total number of water " + - // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - setNTU(calcNTU(y0, y1, gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), - yMean)); - // System.out.println("NTU " + getNTU()); - - // double Ks = 0.055; - getSolventOutStream().getThermoSystem().initPhysicalProperties(); - getGasOutStream().getThermoSystem().initPhysicalProperties(); - - // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) - // .getPhysicalProperties().getDensity() - - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()) / - // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); - - // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * - // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()/ 3.14 / vtemp); - // System.out.println("diameter " + d); - } catch (Exception e) { - e.printStackTrace(); - } - // System.out.println("rich TEG from absorber " + - // getSolventOutStream().getFlowRate("kg/hr")); - } /** {@inheritDoc} */ @Override @@ -475,6 +374,8 @@ public void run(UUID id) { double absorptionEffiency = calcEa(); double y0 = calcY0(); + double y0TEG = calcY0TEG(); + if (isSetWaterInDryGas) { y1 = waterInDryGas; setNumberOfTheoreticalStages(2.0); @@ -487,6 +388,10 @@ public void run(UUID id) { double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); double molesWaterToMove = (yMean - y1) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + double yMeanTEG = mixedStream.getThermoSystem().getPhase(0).getComponent("TEG").getx(); + double molesTEGToMove = + (y0TEG - yMeanTEG) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + // System.out.println("Lean TEG to absorber " // +solventInStream.getFlowRate("kg/hr")); @@ -499,6 +404,8 @@ public void run(UUID id) { newMixedStream.setName("test"); newMixedStream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); newMixedStream.getThermoSystem().addComponent("water", molesWaterToMove, 1); + newMixedStream.getThermoSystem().addComponent("TEG", molesTEGToMove, 0); + newMixedStream.getThermoSystem().addComponent("TEG", -molesTEGToMove, 1); newMixedStream.getThermoSystem().initBeta(); newMixedStream.getThermoSystem().init_x_y(); newMixedStream.getThermoSystem().init(2); From d854aa5566e350b912736991e564cc3d059e01f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Fri, 22 Jul 2022 13:58:00 +0200 Subject: [PATCH 6/6] refact: style --- .../processEquipment/absorber/SimpleTEGAbsorber.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index cbac8695a..2c2ccc505 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -344,12 +344,10 @@ public double calcNTU(double y0, double y1, double yb, double ymix) { return Math.log((yb - ymix) / (y1 - y0)); } - /** {@inheritDoc} */ @Override public void run(UUID id) { try { - double y1 = 0.0; // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); mixedStream.getThermoSystem().setNumberOfPhases(2); @@ -376,6 +374,7 @@ public void run(UUID id) { double y0 = calcY0(); double y0TEG = calcY0TEG(); + double y1 = 0.0; if (isSetWaterInDryGas) { y1 = waterInDryGas; setNumberOfTheoreticalStages(2.0); @@ -412,8 +411,6 @@ public void run(UUID id) { mixedStream = newMixedStream; mixedStream.setCalculationIdentifier(id); - // stream.getThermoSystem().display(); - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); gasTemp.init(2);