From 3c2871f3df7c70e05118cc6c865ad9a877891c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:43:14 +0200 Subject: [PATCH 1/4] refactor: formatting --- .../flashOps/PUflash.java | 194 +++++++++--------- .../flashOps/QfuncFlash.java | 167 ++++++++------- .../HydrateFormationPressureFlash.java | 128 ++++++------ .../flashOps/saturationOps/WATcalc.java | 130 ++++++------ 4 files changed, 310 insertions(+), 309 deletions(-) diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java index 79bc5cdb4..de8b27f13 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java @@ -11,109 +11,111 @@ * @version $Id: $Id */ public class PUflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Uspec = 0; - Flash tpFlash; + double Uspec = 0; + Flash tpFlash; - /** - *

- * Constructor for PUflash. - *

- */ - public PUflash() {} + /** + *

+ * Constructor for PUflash. + *

+ */ + public PUflash() {} - /** - *

- * Constructor for PUflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Uspec a double - */ - public PUflash(SystemInterface system, double Uspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Uspec = Uspec; - } + /** + *

+ * Constructor for PUflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Uspec a double + */ + public PUflash(SystemInterface system, double Uspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Uspec = Uspec; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getInternalEnergy() - Uspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getInternalEnergy() - Uspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 10.0e10; - double factor = 0.8; - do { - if (error > erorOld) { - factor /= 2.0; - } else if (error < erorOld && factor < 0.8) { - factor *= 1.1; - } - iterations++; - oldTemp = nyTemp; - system.init(2); - nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); - // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + - // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); - if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 1.0; - } - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - erorOld = error; - error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); - // System.out.println("error " + error); - // System.out.println("temperature " + system.getTemperature() + " " + - // iterations); - } while (error > 1e-8 && iterations < 500); + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 10.0e10; + double factor = 0.8; + do { + if (error > erorOld) { + factor /= 2.0; + } else if (error < erorOld && factor < 0.8) { + factor *= 1.1; + } + iterations++; + oldTemp = nyTemp; + system.init(2); + nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); + // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + + // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); + if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 1.0; + } + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + erorOld = error; + error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); + // System.out.println("error " + error); + // System.out.println("temperature " + system.getTemperature() + " " + + // iterations); + } while (error > 1e-8 && iterations < 500); - return 1.0 / nyTemp; - } + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // System.out.println("internal energy start: " + system.getInternalEnergy()); - solveQ(); - // System.out.println("internal energy end: " + system.getInternalEnergy()); - // System.out.println("enthalpy: " + system.getEnthalpy()); - // System.out.println("Temperature: " + system.getTemperature()); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("internal energy start: " + system.getInternalEnergy()); + solveQ(); + // System.out.println("internal energy end: " + system.getInternalEnergy()); + // System.out.println("enthalpy: " + system.getEnthalpy()); + // System.out.println("Temperature: " + system.getTemperature()); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java index f7e0ad1e4..8e94a55d2 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java @@ -13,96 +13,95 @@ * @version $Id: $Id */ public class QfuncFlash extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(QfuncFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(QfuncFlash.class); - double Hspec = 0; - Flash tpFlash; - int type = 0; + double Hspec = 0; + Flash tpFlash; + int type = 0; - /** - *

- * Constructor for QfuncFlash. - *

- */ - public QfuncFlash() {} + /** + *

+ * Constructor for QfuncFlash. + *

+ */ + public QfuncFlash() {} - /** - *

- * Constructor for QfuncFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param type a int - */ - public QfuncFlash(SystemInterface system, double Hspec, int type) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Hspec = Hspec; - this.type = type; - } + /** + *

+ * Constructor for QfuncFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param type a int + */ + public QfuncFlash(SystemInterface system, double Hspec, int type) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Hspec = Hspec; + this.type = type; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getEnthalpy() - Hspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getEnthalpy() - Hspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - do { - iterations++; - oldTemp = nyTemp; - system.init(3); - nyTemp = oldTemp - calcdQdT() / calcdQdTT(); - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 - && iterations < 1000); - return 1.0 / nyTemp; - } + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + do { + iterations++; + oldTemp = nyTemp; + system.init(3); + nyTemp = oldTemp - calcdQdT() / calcdQdTT(); + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 && iterations < 1000); + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - logger.info("entropy: " + system.getEntropy()); - sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, - system.getPhases()[0].getNumberOfComponents(), type); - secondOrderSolver.setSpec(Hspec); - secondOrderSolver.solve(1); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + logger.info("entropy: " + system.getEntropy()); + sysNewtonRhapsonPHflash secondOrderSolver = + new sysNewtonRhapsonPHflash(system, 2, system.getPhases()[0].getNumberOfComponents(), type); + secondOrderSolver.setSpec(Hspec); + secondOrderSolver.solve(1); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java index daa05bc8b..626aa7940 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java @@ -15,75 +15,75 @@ * @version $Id: $Id */ public class HydrateFormationPressureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- */ - public HydrateFormationPressureFlash() {} + /** + *

+ * Constructor for HydrateFormationPressureFlash. + *

+ */ + public HydrateFormationPressureFlash() {} - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HydrateFormationPressureFlash(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for HydrateFormationPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HydrateFormationPressureFlash(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public void run() { - double olfFug = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.getPhase(4).getComponent("water").setx(1.0); - system.init(0); - system.init(1); - int iter = 0; - do { - iter++; - olfFug = system.getPhase(4).getFugacity("water"); - setFug(); - ops.TPflash(); + /** {@inheritDoc} */ + @Override + public void run() { + double olfFug = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.getPhase(4).getComponent("water").setx(1.0); + system.init(0); + system.init(1); + int iter = 0; + do { + iter++; + olfFug = system.getPhase(4).getFugacity("water"); + setFug(); + ops.TPflash(); - system.init(1); - system.getPhase(4).getComponent("water").setx(1.0); - logger.info("diff " + (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water"))); - system.setPressure(system.getPressure() * (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water"))); - logger.info("pressure " + system.getPressure()); - // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); - } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 - && iter < 100); - // logger.info("hydrate structure = " + ((ComponentHydrate) - // system.getPhase(3).getComponent("water")).getHydrateStructure()); - logger.info("end"); - } + system.init(1); + system.getPhase(4).getComponent("water").setx(1.0); + logger.info("diff " + + (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); + system.setPressure(system.getPressure() + * (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); + logger.info("pressure " + system.getPressure()); + // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); + } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 + && iter < 100); + // logger.info("hydrate structure = " + ((ComponentHydrate) + // system.getPhase(3).getComponent("water")).getHydrateStructure()); + logger.info("end"); + } - /** - *

- * setFug. - *

- */ - public void setFug() { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, - system.getPhase(0).getFugacity(i)); - } - } - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); - system.getPhase(4).getComponent("water").setx(1.0); + /** + *

+ * setFug. + *

+ */ + public void setFug() { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, + system.getPhase(0).getFugacity(i)); + } } + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + system.getPhase(4).getComponent("water").setx(1.0); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java index 0906c556f..b9b7d8fbf 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java @@ -14,75 +14,75 @@ * @version $Id: $Id */ public class WATcalc extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(WATcalc.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WATcalc.class); - /** - *

- * Constructor for WATcalc. - *

- */ - public WATcalc() {} + /** + *

+ * Constructor for WATcalc. + *

+ */ + public WATcalc() {} - /** - *

- * Constructor for WATcalc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public WATcalc(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for WATcalc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public WATcalc(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public void run() { - double sumx = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double funkOld = 0.0, deltaT = 1.0; - double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i).setx(1.0); - Ksolid[i] = 1.0; - } - do { - iter++; - ops.TPflash(); + /** {@inheritDoc} */ + @Override + public void run() { + double sumx = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double funkOld = 0.0, deltaT = 1.0; + double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i).setx(1.0); + Ksolid[i] = 1.0; + } + do { + iter++; + ops.TPflash(); - sumx = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i) - .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); - Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() - / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); - sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); - } - double funk = sumx - 1.0; - double dfunkdt = (funk - funkOld) / deltaT; - funkOld = funk; - double dT = -funk / dfunkdt; - double oldTemp = system.getTemperature(); - if (iter > 1) { - system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); - } else { - system.setTemperature(system.getTemperature() - 0.1); - } - deltaT = system.getTemperature() - oldTemp; - // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " - // + system.getTemperature()); - } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); - // logger.info("sumx " + sumx); + sumx = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i) + .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); + Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() + / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); + sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); + } + double funk = sumx - 1.0; + double dfunkdt = (funk - funkOld) / deltaT; + funkOld = funk; + double dT = -funk / dfunkdt; + double oldTemp = system.getTemperature(); + if (iter > 1) { + system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); + } else { + system.setTemperature(system.getTemperature() - 0.1); + } + deltaT = system.getTemperature() - oldTemp; + // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " + // + system.getTemperature()); + } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); + // logger.info("sumx " + sumx); - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); - system.setBeta(system.getNumberOfPhases() - 1, 1e-10); - system.init(3); - } + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); + system.setBeta(system.getNumberOfPhases() - 1, 1e-10); + system.init(3); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } From 9a4a0662c97bef59c9fdf619ce64064265436f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:51:12 +0200 Subject: [PATCH 2/4] test failed on my environment --- .../processEquipment/util/StreamSaturatorUtilTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java index 4d03cdf3d..41210a056 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java @@ -33,7 +33,8 @@ void testRun() { processOps.run(); assertEquals(0.0012319218375683974, - streamSaturator.getOutletStream().getFluid().getPhase(0).getComponent("water").getx()); + streamSaturator.getOutletStream().getFluid().getPhase(0).getComponent("water").getx(), + 1e-16); } From 09d3c7e455d674ddff202a9f16bb1e8ea67d07c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:55:00 +0200 Subject: [PATCH 3/4] revert --- .../flashOps/PUflash.java | 194 +++++++++--------- .../flashOps/QfuncFlash.java | 167 +++++++-------- .../HydrateFormationPressureFlash.java | 128 ++++++------ .../flashOps/saturationOps/WATcalc.java | 130 ++++++------ 4 files changed, 309 insertions(+), 310 deletions(-) diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java index de8b27f13..79bc5cdb4 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java @@ -11,111 +11,109 @@ * @version $Id: $Id */ public class PUflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Uspec = 0; - Flash tpFlash; + double Uspec = 0; + Flash tpFlash; - /** - *

- * Constructor for PUflash. - *

- */ - public PUflash() {} + /** + *

+ * Constructor for PUflash. + *

+ */ + public PUflash() {} - /** - *

- * Constructor for PUflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Uspec a double - */ - public PUflash(SystemInterface system, double Uspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Uspec = Uspec; - } + /** + *

+ * Constructor for PUflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Uspec a double + */ + public PUflash(SystemInterface system, double Uspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Uspec = Uspec; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getInternalEnergy() - Uspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getInternalEnergy() - Uspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(); - double nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0; - double erorOld = 10.0e10; - double factor = 0.8; - do { - if (error > erorOld) { - factor /= 2.0; - } else if (error < erorOld && factor < 0.8) { - factor *= 1.1; - } - iterations++; - oldTemp = nyTemp; - system.init(2); - nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); - // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + - // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); - if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 1.0; - } - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - erorOld = error; - error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); - // System.out.println("error " + error); - // System.out.println("temperature " + system.getTemperature() + " " + - // iterations); - } while (error > 1e-8 && iterations < 500); + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0, erorOld = 10.0e10; + double factor = 0.8; + do { + if (error > erorOld) { + factor /= 2.0; + } else if (error < erorOld && factor < 0.8) { + factor *= 1.1; + } + iterations++; + oldTemp = nyTemp; + system.init(2); + nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); + // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + + // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); + if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 1.0; + } + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + erorOld = error; + error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); + // System.out.println("error " + error); + // System.out.println("temperature " + system.getTemperature() + " " + + // iterations); + } while (error > 1e-8 && iterations < 500); - return 1.0 / nyTemp; - } + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // System.out.println("internal energy start: " + system.getInternalEnergy()); - solveQ(); - // System.out.println("internal energy end: " + system.getInternalEnergy()); - // System.out.println("enthalpy: " + system.getEnthalpy()); - // System.out.println("Temperature: " + system.getTemperature()); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("internal energy start: " + system.getInternalEnergy()); + solveQ(); + // System.out.println("internal energy end: " + system.getInternalEnergy()); + // System.out.println("enthalpy: " + system.getEnthalpy()); + // System.out.println("Temperature: " + system.getTemperature()); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java index 8e94a55d2..f7e0ad1e4 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java @@ -13,95 +13,96 @@ * @version $Id: $Id */ public class QfuncFlash extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(QfuncFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(QfuncFlash.class); - double Hspec = 0; - Flash tpFlash; - int type = 0; + double Hspec = 0; + Flash tpFlash; + int type = 0; - /** - *

- * Constructor for QfuncFlash. - *

- */ - public QfuncFlash() {} + /** + *

+ * Constructor for QfuncFlash. + *

+ */ + public QfuncFlash() {} - /** - *

- * Constructor for QfuncFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param type a int - */ - public QfuncFlash(SystemInterface system, double Hspec, int type) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Hspec = Hspec; - this.type = type; - } + /** + *

+ * Constructor for QfuncFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param type a int + */ + public QfuncFlash(SystemInterface system, double Hspec, int type) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Hspec = Hspec; + this.type = type; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getEnthalpy() - Hspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getEnthalpy() - Hspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - do { - iterations++; - oldTemp = nyTemp; - system.init(3); - nyTemp = oldTemp - calcdQdT() / calcdQdTT(); - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 && iterations < 1000); - return 1.0 / nyTemp; - } + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + do { + iterations++; + oldTemp = nyTemp; + system.init(3); + nyTemp = oldTemp - calcdQdT() / calcdQdTT(); + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 + && iterations < 1000); + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - logger.info("entropy: " + system.getEntropy()); - sysNewtonRhapsonPHflash secondOrderSolver = - new sysNewtonRhapsonPHflash(system, 2, system.getPhases()[0].getNumberOfComponents(), type); - secondOrderSolver.setSpec(Hspec); - secondOrderSolver.solve(1); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + logger.info("entropy: " + system.getEntropy()); + sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, + system.getPhases()[0].getNumberOfComponents(), type); + secondOrderSolver.setSpec(Hspec); + secondOrderSolver.solve(1); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java index 626aa7940..daa05bc8b 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java @@ -15,75 +15,75 @@ * @version $Id: $Id */ public class HydrateFormationPressureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- */ - public HydrateFormationPressureFlash() {} + /** + *

+ * Constructor for HydrateFormationPressureFlash. + *

+ */ + public HydrateFormationPressureFlash() {} - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HydrateFormationPressureFlash(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for HydrateFormationPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HydrateFormationPressureFlash(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public void run() { - double olfFug = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.getPhase(4).getComponent("water").setx(1.0); - system.init(0); - system.init(1); - int iter = 0; - do { - iter++; - olfFug = system.getPhase(4).getFugacity("water"); - setFug(); - ops.TPflash(); + /** {@inheritDoc} */ + @Override + public void run() { + double olfFug = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.getPhase(4).getComponent("water").setx(1.0); + system.init(0); + system.init(1); + int iter = 0; + do { + iter++; + olfFug = system.getPhase(4).getFugacity("water"); + setFug(); + ops.TPflash(); - system.init(1); - system.getPhase(4).getComponent("water").setx(1.0); - logger.info("diff " - + (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); - system.setPressure(system.getPressure() - * (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); - logger.info("pressure " + system.getPressure()); - // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); - } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 - && iter < 100); - // logger.info("hydrate structure = " + ((ComponentHydrate) - // system.getPhase(3).getComponent("water")).getHydrateStructure()); - logger.info("end"); - } + system.init(1); + system.getPhase(4).getComponent("water").setx(1.0); + logger.info("diff " + (system.getPhase(4).getFugacity("water") + / system.getPhase(0).getFugacity("water"))); + system.setPressure(system.getPressure() * (system.getPhase(4).getFugacity("water") + / system.getPhase(0).getFugacity("water"))); + logger.info("pressure " + system.getPressure()); + // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); + } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 + && iter < 100); + // logger.info("hydrate structure = " + ((ComponentHydrate) + // system.getPhase(3).getComponent("water")).getHydrateStructure()); + logger.info("end"); + } - /** - *

- * setFug. - *

- */ - public void setFug() { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, - system.getPhase(0).getFugacity(i)); - } + /** + *

+ * setFug. + *

+ */ + public void setFug() { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, + system.getPhase(0).getFugacity(i)); + } + } + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + system.getPhase(4).getComponent("water").setx(1.0); } - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); - system.getPhase(4).getComponent("water").setx(1.0); - } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java index b9b7d8fbf..0906c556f 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java @@ -14,75 +14,75 @@ * @version $Id: $Id */ public class WATcalc extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(WATcalc.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WATcalc.class); - /** - *

- * Constructor for WATcalc. - *

- */ - public WATcalc() {} + /** + *

+ * Constructor for WATcalc. + *

+ */ + public WATcalc() {} - /** - *

- * Constructor for WATcalc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public WATcalc(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - double sumx = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double funkOld = 0.0, deltaT = 1.0; - double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i).setx(1.0); - Ksolid[i] = 1.0; + /** + *

+ * Constructor for WATcalc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public WATcalc(SystemInterface system) { + super(system); } - do { - iter++; - ops.TPflash(); - sumx = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i) - .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); - Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() - / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); - sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); - } - double funk = sumx - 1.0; - double dfunkdt = (funk - funkOld) / deltaT; - funkOld = funk; - double dT = -funk / dfunkdt; - double oldTemp = system.getTemperature(); - if (iter > 1) { - system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); - } else { - system.setTemperature(system.getTemperature() - 0.1); - } - deltaT = system.getTemperature() - oldTemp; - // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " - // + system.getTemperature()); - } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); - // logger.info("sumx " + sumx); + /** {@inheritDoc} */ + @Override + public void run() { + double sumx = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double funkOld = 0.0, deltaT = 1.0; + double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i).setx(1.0); + Ksolid[i] = 1.0; + } + do { + iter++; + ops.TPflash(); + + sumx = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i) + .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); + Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() + / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); + sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); + } + double funk = sumx - 1.0; + double dfunkdt = (funk - funkOld) / deltaT; + funkOld = funk; + double dT = -funk / dfunkdt; + double oldTemp = system.getTemperature(); + if (iter > 1) { + system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); + } else { + system.setTemperature(system.getTemperature() - 0.1); + } + deltaT = system.getTemperature() - oldTemp; + // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " + // + system.getTemperature()); + } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); + // logger.info("sumx " + sumx); - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); - system.setBeta(system.getNumberOfPhases() - 1, 1e-10); - system.init(3); - } + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); + system.setBeta(system.getNumberOfPhases() - 1, 1e-10); + system.init(3); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } From a9e422838b17136a6de1d9b0bd66ea417f6dfc94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:55:45 +0200 Subject: [PATCH 4/4] create test --- .../util/example/compressorTest12.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java b/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java index bc9313c51..ebd977494 100644 --- a/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java +++ b/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java @@ -1,22 +1,21 @@ package neqsim.processSimulation.util.example; +import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.system.SystemInterface; /** - *

compressorTest12 class.

+ *

+ * compressorTest12 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class compressorTest12 { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { + public static SystemInterface getSystem() { neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos(265, 49.6); testSystem.addComponent("methane", 92); @@ -42,6 +41,12 @@ public static void main(String args[]) { testSystem.addComponent("m-Xylene", 1e-12); testSystem.addComponent("nC10", 1e-12); testSystem.createDatabase(true); + return testSystem; + } + + @Test + public void testRun() { + SystemInterface testSystem = getSystem(); // testSystem.setMixingRule(2); // ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); // testOps.TPflash();