From 4eab7170e40e10be77ae72953ad9ac4c2458ed3b Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Thu, 22 Sep 2022 21:39:32 +0200
Subject: [PATCH 001/171] Update pom.xml
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5bb84fc856..2cf7dbfcdd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
- * hasPlusFraction.
+ * Getter for property hasPlusFraction.
* compressorTest12 class.
+ * compressorTest12 class.
+ *
liquidOutStream
.
*
*
- * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream}
- * object
+ * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object
*/
public StreamInterface getLiquidOutStream() {
return liquidOutStream;
@@ -138,8 +144,7 @@ public StreamInterface getLiquidOutStream() {
* Getter for the field gasOutStream
.
*
*
- * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream}
- * object
+ * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object
*/
public StreamInterface getGasOutStream() {
return gasOutStream;
@@ -150,8 +155,7 @@ public StreamInterface getGasOutStream() {
* getGas.
*
*
- * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream}
- * object
+ * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object
*/
public StreamInterface getGas() {
return getGasOutStream();
@@ -162,8 +166,7 @@ public StreamInterface getGas() {
* getLiquid.
*
*
- * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream}
- * object
+ * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object
*/
public StreamInterface getLiquid() {
return getLiquidOutStream();
@@ -200,11 +203,8 @@ public void run(UUID id) {
relFact = liquidVolume / (thermoSystem.getPhase(j).getVolume() * 1.0e-5);
}
for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) {
- thermoSystem.addComponent(
- thermoSystem.getPhase(j).getComponent(i).getComponentName(),
- relFact * thermoSystem.getPhase(j).getComponent(i)
- .getNumberOfMolesInPhase(),
- j);
+ thermoSystem.addComponent(thermoSystem.getPhase(j).getComponent(i).getComponentName(),
+ relFact * thermoSystem.getPhase(j).getComponent(i).getNumberOfMolesInPhase(), j);
}
}
if (thermoSystem2.getNumberOfPhases() == 2) {
@@ -225,8 +225,8 @@ public void run(UUID id) {
} else {
liquidLevel = 1e-10;
}
- liquidVolume = getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter
- * separatorLength;
+ liquidVolume =
+ getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength;
gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter
* separatorLength;
System.out.println("moles out" + liquidOutStream.getThermoSystem().getTotalNumberOfMoles());
@@ -284,16 +284,21 @@ public void runTransient(double dt, UUID id) {
dn += inletStreamMixer.getOutletStream().getThermoSystem().getPhase(k).getComponent(i)
.getNumberOfMolesInPhase();
}
- dn = dn - gasOutStream.getThermoSystem().getPhase(0).getComponent(i)
- .getNumberOfMolesInPhase()
- - liquidOutStream.getThermoSystem().getPhase(0).getComponent(i)
- .getNumberOfMolesInPhase();
+ dn = dn - gasOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase()
+ - liquidOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase();
System.out.println("dn " + dn);
thermoSystem.addComponent(inletStreamMixer.getOutletStream().getThermoSystem().getPhase(0)
.getComponent(i).getComponentName(), dn * dt);
}
+ System.out.println("liquid level " + liquidLevel);
+ liquidVolume =
+ getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength;
+ gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter
+ * separatorLength;
+
System.out.println("total moles " + thermoSystem.getTotalNumberOfMoles());
+
ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem);
thermoOps.VUflash(volume1, newEnergy);
@@ -306,8 +311,8 @@ public void runTransient(double dt, UUID id) {
liquidLevel = 1e-10;
}
System.out.println("liquid level " + liquidLevel);
- liquidVolume = getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter
- * separatorLength;
+ liquidVolume =
+ getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength;
gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter
* separatorLength;
setCalculationIdentifier(id);
@@ -323,14 +328,12 @@ public void runTransient(double dt, UUID id) {
public void setOutComposition(SystemInterface thermoSystem) {
for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) {
if (thermoSystem.hasPhaseType("gas")) {
- getGasOutStream().getThermoSystem().getPhase(0).getComponent(i)
- .setx(thermoSystem.getPhase(thermoSystem.getPhaseNumberOfPhase("gas"))
- .getComponent(i).getx());
+ getGasOutStream().getThermoSystem().getPhase(0).getComponent(i).setx(thermoSystem
+ .getPhase(thermoSystem.getPhaseNumberOfPhase("gas")).getComponent(i).getx());
}
if (thermoSystem.hasPhaseType("oil")) {
- getLiquidOutStream().getThermoSystem().getPhase(0).getComponent(i)
- .setx(thermoSystem.getPhase(thermoSystem.getPhaseNumberOfPhase("oil"))
- .getComponent(i).getx());
+ getLiquidOutStream().getThermoSystem().getPhase(0).getComponent(i).setx(thermoSystem
+ .getPhase(thermoSystem.getPhaseNumberOfPhase("oil")).getComponent(i).getx());
}
}
}
From a74a7dc76e8d5261911e54b957b8e77da27b010e 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 12:55:15 +0200
Subject: [PATCH 010/171] Formatting (#541)
* refact: autoformatting and fix of checkstyle violations
---
.../flashOps/PHflash.java | 18 +-
.../flashOps/PHflashGERG2008.java | 19 +-
.../flashOps/PUflash.java | 194 +++++++++---------
.../flashOps/QfuncFlash.java | 167 ++++++++-------
.../flashOps/saturationOps/FreezeOut.java | 19 +-
.../flashOps/saturationOps/FugTestConstP.java | 17 +-
.../HydrateFormationPressureFlash.java | 128 ++++++------
.../SolidComplexTemperatureCalc.java | 15 +-
.../flashOps/saturationOps/WATcalc.java | 130 ++++++------
.../WaterDewPointEquilibriumLine.java | 4 +-
10 files changed, 371 insertions(+), 340 deletions(-)
diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflash.java
index 5a3a489d6b..744094c300 100644
--- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflash.java
+++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflash.java
@@ -78,16 +78,18 @@ public double calcdQdT() {
* @return a double
*/
public double solveQ() {
- double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature();
+ double oldTemp = 1.0 / system.getTemperature();
+ double nyTemp = 1.0 / system.getTemperature();
double iterations = 1;
- double error = 1.0, erorOld = 1.0e10;
+ double error = 1.0;
+ double erorOld = 1.0e10;
double factor = 0.8;
double newCorr = 1.0;
system.init(2);
boolean correctFactor = true;
-
- double maxTemperature = 1e10, minTemperature = 0.0;
-
+ double maxTemperature = 1e10;
+ double minTemperature = 0.0;
+
do {
if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) {
factor *= 0.5;
@@ -144,9 +146,11 @@ public double solveQ() {
* @return a double
*/
public double solveQ2() {
- double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature();
+ double oldTemp = 1.0 / system.getTemperature();
+ double nyTemp = 1.0 / system.getTemperature();
double iterations = 1;
- double error = 1.0, erorOld = 1.0e10;
+ double error = 1.0;
+ double erorOld = 1.0e10;
double factor = 0.8;
double newCorr = 1.0;
system.init(2);
diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java
index 38bd9b2464..9357990b72 100644
--- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java
+++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java
@@ -77,16 +77,18 @@ public double calcdQdT() {
* @return a double
*/
public double solveQ() {
- double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature();
+ double oldTemp = 1.0 / system.getTemperature();
+ double nyTemp = 1.0 / system.getTemperature();
double iterations = 1;
- double error = 1.0, erorOld = 1.0e10;
+ double error = 1.0;
+ double erorOld = 1.0e10;
double factor = 0.8;
double newCorr = 1.0;
system.init(2);
boolean correctFactor = true;
- double maxTemperature = 1e10, minTemperature = 0.0;
-
+ double maxTemperature = 1e10;
+ double minTemperature = 0.0;
do {
if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) {
factor *= 0.5;
@@ -97,8 +99,7 @@ public double solveQ() {
oldTemp = nyTemp;
double[] gergProps = system.getPhase(0).getProperties_GERG2008();
cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K
- enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol
- // K
+ enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K
newCorr = factor * calcdQdT() / calcdQdTT();
nyTemp = oldTemp - newCorr;
if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) {
@@ -152,9 +153,11 @@ public double solveQ() {
* @return a double
*/
public double solveQ2() {
- double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature();
+ double oldTemp = 1.0 / system.getTemperature();
+ double nyTemp = 1.0 / system.getTemperature();
double iterations = 1;
- double error = 1.0, erorOld = 1.0e10;
+ double error = 1.0;
+ double erorOld = 1.0e10;
double factor = 0.8;
double newCorr = 1.0;
system.init(2);
diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java
index 79bc5cdb4d..de8b27f132 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 f7e0ad1e45..8e94a55d2c 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/FreezeOut.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java index 5955d0fdb0..fa2c78c819 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java @@ -53,12 +53,21 @@ public void run() { // double[][] Fug = new double[12][35]; // double[][] Fugrel = new double[2][40]; int iterations = 0; - double newTemp = 0, OldTemp = 0; + double newTemp = 0; + double OldTemp = 0; double FugRatio; - double T2low = 0, T2high = 0; - boolean Left = true, half = false; - double SolidFug = 0.0, FluidFug = 0.0, temp = 0.0, pres = 0.0, Pvapsolid = 0.0; - double solvol = 0.0, soldens = 0.0, trpTemp = 0.0; + double T2low = 0; + double T2high = 0; + boolean Left = true; + boolean half = false; + double SolidFug = 0.0; + double FluidFug = 0.0; + double temp = 0.0; + double pres = 0.0; + double Pvapsolid = 0.0; + double solvol = 0.0; + double soldens = 0.0; + double trpTemp = 0.0; boolean CCequation = true; boolean noFreezeliq = true; boolean SolidForms = true; diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java index 5c9f553499..4f14e68f43 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java @@ -20,9 +20,12 @@ public class FugTestConstP extends constantDutyTemperatureFlash implements ThermodynamicConstantsInterface { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(FugTestConstP.class); - public double temp = 0.0, pres = 0.0; - public SystemInterface testSystem, testSystem2; - public ThermodynamicOperations testOps, testOps2; + public double temp = 0.0; + public double pres = 0.0; + public SystemInterface testSystem; + public SystemInterface testSystem2; + public ThermodynamicOperations testOps; + public ThermodynamicOperations testOps2; public int compNumber = 0; public String compName; public boolean compNameGiven = false; @@ -79,9 +82,13 @@ public void initTestSystem2(int K) { /** {@inheritDoc} */ @Override public void run() { - double SolidFug = 0.0, Pvapsolid = 0.0, SolVapFugCoeff = 0.0; + double SolidFug = 0.0; + double Pvapsolid = 0.0; + double SolVapFugCoeff = 0.0; // double dfugdt = 0.0; - double solvol = 0.0, soldens = 0.0, trpTemp = 0.0; + double solvol = 0.0; + double soldens = 0.0; + double trpTemp = 0.0; boolean CCequation = true; double[][] Fug = new double[4][20]; double[][] Fugrel = new double[2][20]; diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java index daa05bc8ba..626aa79402 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/SolidComplexTemperatureCalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java index 8bf209a8af..54543cc36f 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java @@ -17,7 +17,8 @@ public class SolidComplexTemperatureCalc extends constantDutyTemperatureFlash { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(SolidComplexTemperatureCalc.class); - String comp1, comp2; + String comp1; + String comp2; /** ConstantKcomplex=0.133736021815520500
. */
public static double Kcomplex = 0.133736021815520500;
/** Constant HrefComplex=4598.717135
. */
@@ -88,7 +89,8 @@ public void runOld() {
// system.setHydrateCheck(true);
ThermodynamicOperations ops = new ThermodynamicOperations(system);
int iter = 0;
- double funkOld = 0.0, deltaT = 1.0;
+ double funkOld = 0.0;
+ double deltaT = 1.0;
double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()];
for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) {
Ksolid[i] = 1.0;
@@ -145,12 +147,15 @@ public void run() {
double deltaT = 1.0;
// logger.info("starting.... ");
- int compNumber_1 = system.getPhase(0).getComponent(comp1).getComponentNumber(),
- compNumber_2 = system.getPhase(0).getComponent(comp2).getComponentNumber();
+ int compNumber_1 = system.getPhase(0).getComponent(comp1).getComponentNumber();
// MEGwater parameters
- double temperature = 0.0, oldTemperature = 0.0, oldError = 0.0, error = 0.0;
+ int compNumber_2 = system.getPhase(0).getComponent(comp2).getComponentNumber();
+ double temperature = 0.0;
+ double oldTemperature = 0.0;
+ double oldError = 0.0;
+ double error = 0.0;
boolean testFalse = true;
int iteration = 0;
do {
diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java
index 0906c556fb..b9b7d8fbf5 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) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java index ec4ac5c7ca..24369eae9c 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java @@ -15,7 +15,9 @@ public class WaterDewPointEquilibriumLine extends constantDutyTemperatureFlash { private static final long serialVersionUID = 1000; double[][] hydratePoints = null; - double minPressure = 1.0, maxPressure = 200.0; + double minPressure = 1.0; + double maxPressure = 200.0; + int numberOfPoints = 10; /** From bd1d502166e87868c202a82bc6af90baf9abceee Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Wed, 5 Oct 2022 19:43:54 +0200 Subject: [PATCH 011/171] added getPressure() setPressure() (#543) * added getPressure() setPressure() * update * added setPressure * update --- .../ProcessEquipmentBaseClass.java | 22 ++++++++++++++----- .../ProcessEquipmentInterface.java | 12 +++++++++- .../processSystem/ProcessModuleBaseClass.java | 12 ++++++++++ 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java index dd771d8f63..bd8ade991c 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java @@ -191,12 +191,21 @@ public boolean isSetEnergyStream() { /** {@inheritDoc} */ @Override public double getPressure() { - return 1.0; + return getFluid().getPressure(); } /** {@inheritDoc} */ @Override - public void setPressure(double pressure) {} + public double getPressure(String unit) { + return getFluid().getPressure(unit); + } + + + /** {@inheritDoc} */ + @Override + public void setPressure(double pressure) { + getFluid().setPressure(pressure); + } /** {@inheritDoc} */ @Override @@ -253,12 +262,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } ProcessEquipmentBaseClass other = (ProcessEquipmentBaseClass) obj; return Objects.equals(conditionAnalysisMessage, other.conditionAnalysisMessage) && Objects.equals(controller, other.controller) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java index 1aab7b31eb..c885b40d6f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java @@ -93,7 +93,7 @@ public interface ProcessEquipmentInterface extends SimulationInterface, java.io. * * @return a {@link neqsim.thermo.system.SystemInterface} object */ - default public SystemInterface getFluid() { + public default SystemInterface getFluid() { return getThermoSystem(); } @@ -134,6 +134,16 @@ default public SystemInterface getFluid() { */ public void setPressure(double pressure); + /** + *+ * getPressure. + *
+ * + * @param unit a {@link java.lang.String} object + * + **/ + public double getPressure(String unit); + /** ** runConditionAnalysis. diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java index 72140f2187..ac34d2a004 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java @@ -223,4 +223,16 @@ public String getConditionAnalysisMessage() { public String[][] getResultTable() { return null; } + + /** + *
+ * getPressure. + *
+ * + * @param unit a {@link java.lang.String} object + * + **/ + public double getPressure(String unit) { + return 1.0; + } } From 4ec7ba1127d4889a857bd526cbdfb8ec9922b027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Thu, 6 Oct 2022 07:55:51 +0200 Subject: [PATCH 012/171] fix: upgrade org.apache.logging.log4j:log4j-core from 2.18.0 to 2.19.0 (#545) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.18.0 to 2.19.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot+ * testCompressorWithGERG2008-2. + *
+ */ + @Test + public void testCompressorWithGERG2008_2() { + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = + new neqsim.processSimulation.processEquipment.compressor.Compressor("Compressor1", + inletStream); + compressor1.setOutletPressure(pressure_Out); + compressor1.setPolytropicEfficiency(0.56); + compressor1.setUsePolytropicCalc(true); + compressor1.setUseGERG2008(true); + compressor1.run(); + double head = compressor1.getPolytropicHead("kJ/kg"); + System.out.println("gerg power " + compressor1.getPower() + " W"); + // assertEquals(compressor1.getPolytropicHead("kJ/kg"), 89.464626, 0.01); + compressor1.setUseGERG2008(false); + compressor1.run(); + double head2 = compressor1.getPolytropicHead("kJ/kg"); + System.out.println("gerg power " + compressor1.getPower() + " W"); + assertEquals(compressor1.getPolytropicHead("kJ/kg"), 94.32923841459161, 0.01); + + } + /** *
* test Multi Phase Compression.
From 2c916e598ea48ca038bc12ea43ed91513ac04e35 Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Mon, 17 Oct 2022 10:14:39 +0200
Subject: [PATCH 017/171] Update README.md
---
README.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README.md b/README.md
index 1199f30d88..f528c1a5fe 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,9 @@ The basis for NeqSim is a library of fundamental mathematical models related to
NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of dowloading the library and running a TPflash bencmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html).
+## Use of the NeqSim package
+NeqSim is set up as a dependency in a Java project via the [NeqSim GitHub package distribution](https://github.com/equinor/neqsim/packages/42822).
+
## Getting Started as a NeqSim Java developer
See the [NeqSim Java Wiki](https://github.com/equinor/neqsim/wiki) for how to use the NeqSim API.
From 8fdc43fe0cf6eecda53f0f3eabd035ff01c31a7b Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Mon, 17 Oct 2022 10:26:21 +0200
Subject: [PATCH 018/171] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f528c1a5fe..562691f621 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ The basis for NeqSim is a library of fundamental mathematical models related to
NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of dowloading the library and running a TPflash bencmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html).
## Use of the NeqSim package
-NeqSim is set up as a dependency in a Java project via the [NeqSim GitHub package distribution](https://github.com/equinor/neqsim/packages/42822).
+NeqSim can be set up as a dependency in a Java project via the [NeqSim GitHub package distribution](https://github.com/equinor/neqsim/packages/42822).
## Getting Started as a NeqSim Java developer
From 93dd02e763f7a01320fdba18c69613d3d50ec1d2 Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Mon, 17 Oct 2022 10:51:55 +0200
Subject: [PATCH 019/171] Update pom.xml (#552)
* Update pom.xml
* Update pom.xml
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4ba6107d25..3050f32ce6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,10 +34,10 @@
+ * getIdealLiquidDensity. + *
+ * + * @param {@link java.lang.String} object Supported units are kg/m3 and gr/cm3 + * + * Return normal liquid density of fluid + * + */ + public double getIdealLiquidDensity(String unit); } diff --git a/src/main/java/neqsim/thermo/system/SystemThermo.java b/src/main/java/neqsim/thermo/system/SystemThermo.java index 1ea3e19f9e..70c7ad818a 100644 --- a/src/main/java/neqsim/thermo/system/SystemThermo.java +++ b/src/main/java/neqsim/thermo/system/SystemThermo.java @@ -661,7 +661,11 @@ public void setTotalFlowRate(double flowRate, String flowunit) { if (flowunit.equals("Am3/hr") || flowunit.equals("Am3/min") || flowunit.equals("Am3/sec")) { initPhysicalProperties("density"); } + density = getPhase(0).getDensity("kg/m3"); + if (flowunit.equals("idSm3/hr")) { + density = getIdealLiquidDensity("kg/m3"); + } neqsim.util.unit.Unit unit = new neqsim.util.unit.RateUnit(flowRate, flowunit, getMolarMass(), density, 0); double SIval = unit.getSIvalue(); @@ -5223,4 +5227,25 @@ public void addOilFractions(String[] charNames, double[] charFlowrate, double[] addOilFractions(charNames, charFlowrate, molarMass, relativedensity, lastIsPlusFraction, true, 12); } + + /* + *getIdealLiquidDensity.
Return normal liquid density of fluid in given unit + * + */ + public double getIdealLiquidDensity(String unit) { + double normalLiquidDensity = 0.0; + double molarMass = getMolarMass(); + for (int i = 0; i < getNumberOfComponents(); i++) { + normalLiquidDensity += getComponent(i).getNormalLiquidDensity() * getComponent(i).getz() + * getComponent(i).getMolarMass() / molarMass; + } + if (unit.equals("gr/cm3")) + return normalLiquidDensity; + else if (unit.equals("kg/m3")) + return normalLiquidDensity * 1000.0; + else { + logger.error("unit not supported: " + unit); + return normalLiquidDensity; + } + } } diff --git a/src/main/java/neqsim/util/unit/RateUnit.java b/src/main/java/neqsim/util/unit/RateUnit.java index b1695838d5..fbbb4acf73 100644 --- a/src/main/java/neqsim/util/unit/RateUnit.java +++ b/src/main/java/neqsim/util/unit/RateUnit.java @@ -106,6 +106,10 @@ public double getConversionFactor(String name) { factor = 1.0e6 * mol_Sm3 / (3600.0 * 24.0); } else if (name.equals("MSm^3/hr") || name.equals("MSm3/hr")) { factor = 1.0e6 * mol_Sm3 / (3600.0); + } else if (name.equals("idSm3/hr")) { + factor = 1.0 / molarmass / 3600.0 * stddens; + } else if (name.equals("idSm3/day")) { + factor = 1.0 / molarmass / (3600.0 * 24.0) * stddens; } else { logger.error("unit not supported " + name); } diff --git a/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java b/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java index 3530ce5a2f..134c8f5b55 100644 --- a/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java +++ b/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java @@ -1,5 +1,6 @@ package neqsim.thermo.system; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -15,6 +16,7 @@ void setup() { sys.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); } + @Test void testSetMolarComposition() { sys.setMolarComposition(new double[] { 1, 1.5, 1.75 }); @@ -84,4 +86,19 @@ void testNoFlowPlusFluid() { "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", thrown.getMessage()); } + + @Test + void setFlowRateTest() { + sys.init(0); + double liqDensity = sys.getIdealLiquidDensity("gr/cm3"); + assertEquals(0.8762236458342041, liqDensity, 1e-3); + liqDensity = sys.getIdealLiquidDensity("kg/m3"); + assertEquals(876.2236458342041, liqDensity, 1e-3); + + sys.setTotalFlowRate(1000.0, "idSm3/hr"); + + double flowRate = sys.getFlowRate("kg/hr"); + + assertEquals(876223.6458342039, flowRate, 1e-3); + } } From a9ff27916fde505cbf7ae83d9e5710523a0c9437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Wed, 26 Oct 2022 12:19:49 +0200 Subject: [PATCH 032/171] Formatting (#558) * refactor: formatting --- .../modelTuning/BaseTuningClass.java | 150 +++++++++--------- .../flashOps/PHflash.java | 2 +- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java b/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java index ccf051c95d..e7aa355b77 100644 --- a/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java +++ b/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java @@ -11,88 +11,88 @@ * @version $Id: $Id */ public class BaseTuningClass implements TuningInterface { - private SimulationInterface simulation = null; - private boolean tunePlusMolarMass = false; - private boolean tuneVolumeCorrection = false; - public double saturationTemperature = 273.15; - public double saturationPressure = 273.15; + private SimulationInterface simulation = null; + private boolean tunePlusMolarMass = false; + private boolean tuneVolumeCorrection = false; + public double saturationTemperature = 273.15; + public double saturationPressure = 273.15; - /** - *- * Constructor for BaseTuningClass. - *
- */ - public BaseTuningClass() {} + /** + *+ * Constructor for BaseTuningClass. + *
+ */ + public BaseTuningClass() {} - /** - *- * Constructor for BaseTuningClass. - *
- * - * @param simulationClass a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object - */ - public BaseTuningClass(SimulationInterface simulationClass) { - this.simulation = simulationClass; - } + /** + *+ * Constructor for BaseTuningClass. + *
+ * + * @param simulationClass a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object + */ + public BaseTuningClass(SimulationInterface simulationClass) { + this.simulation = simulationClass; + } - /** {@inheritDoc} */ - @Override - public SimulationInterface getSimulation() { - return simulation; - } + /** {@inheritDoc} */ + @Override + public SimulationInterface getSimulation() { + return simulation; + } - /** {@inheritDoc} */ - @Override - public void setSaturationConditions(double temperature, double pressure) { - saturationTemperature = temperature; - saturationPressure = pressure; - } + /** {@inheritDoc} */ + @Override + public void setSaturationConditions(double temperature, double pressure) { + saturationTemperature = temperature; + saturationPressure = pressure; + } - /** - *- * isTunePlusMolarMass. - *
- * - * @return the tunePlusMolarMass - */ - public boolean isTunePlusMolarMass() { - return tunePlusMolarMass; - } + /** + *+ * isTunePlusMolarMass. + *
+ * + * @return the tunePlusMolarMass + */ + public boolean isTunePlusMolarMass() { + return tunePlusMolarMass; + } - /** - *
- * Setter for the field tunePlusMolarMass
.
- *
+ * Setter for the field tunePlusMolarMass
.
+ *
- * isTuneVolumeCorrection. - *
- * - * @return the tuneVolumeCorrection - */ - public boolean isTuneVolumeCorrection() { - return tuneVolumeCorrection; - } + /** + *+ * isTuneVolumeCorrection. + *
+ * + * @return the tuneVolumeCorrection + */ + public boolean isTuneVolumeCorrection() { + return tuneVolumeCorrection; + } - /** - *
- * Setter for the field tuneVolumeCorrection
.
- *
+ * Setter for the field tuneVolumeCorrection
.
+ *
+ * AdiabaticTwoPhasePipe class. + *
+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class PipeBeggsAndBrills extends Pipeline { + + private static final long serialVersionUID = 1001; + + double inletPressure = 0; + + boolean setTemperature = false; + + boolean setPressureOut = false; + + protected double temperatureOut = 270; + + protected double pressureOut = 0.0; + + private double pressureOutLimit = 0.0; + + double length = 100.0; + + double flowLimit = 1e20; + + String maxflowunit = "kg/hr"; + double insideDiameter = 0.1; + double velocity = 1.0; + double pipeWallRoughness = 1e-5; + private double inletElevation = 0; + private double outletElevation = 0; + double dH = 0.0; + private String flowPattern = "unknown"; + double inputVolumeFractionLiquid; + double mixtureFroudeNumber; + String pipeSpecification = "AP02"; + double A; + double area; + double supGasVel; + double supLiquidVel; + double elevation = 0; + double angle; + boolean setPipeElevation; + double mixtureDensity; + double hydrostaticPressureDrop; + double El = 0; + double supMixVel; + double frictionPressureLoss; + double pressureDrop; + int numberOfIncrements = 1; + + /** + *+ * Constructor for AdiabaticTwoPhasePipe. + *
+ */ + @Deprecated + public PipeBeggsAndBrills() {} + + /** + *+ * Constructor for AdiabaticTwoPhasePipe. + *
+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public PipeBeggsAndBrills(StreamInterface inStream) { + this("PipeBeggsAndBrills", inStream); + } + + /** + * Constructor for AdiabaticTwoPhasePipe. + * + * @param name name of pipe + */ + public PipeBeggsAndBrills(String name) { + super(name); + } + + /** + * Constructor for AdiabaticTwoPhasePipe. + * + * @param name name of pipe + * @param inStream input stream + */ + public PipeBeggsAndBrills(String name, StreamInterface inStream) { + super(name, inStream); + } + + /** + *
+ * Setter for the field pipeSpecification
.
+ *
+ * setOutTemperature. + *
+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + setTemperature = true; + this.temperatureOut = temperature; + } + + public void setElevation(double elevation) { + setPipeElevation = true; + this.elevation = elevation; + } + + public void setAngle(double angle) { + this.angle = angle; + } + + public void setNumberOfIncrements(int numberOfIncrements) { + this.numberOfIncrements = numberOfIncrements; + } + + /** + *+ * setOutPressure. + *
+ * + * @param pressure a double + */ + public void setOutPressure(double pressure) { + setPressureOut = true; + this.pressureOut = pressure; + } + + public void convertSystemUnitToImperial() { + insideDiameter = insideDiameter * 3.2808399; + angle = 0.01745329 * angle; + elevation = elevation * 3.2808399; + length = length * 3.2808399; + pipeWallRoughness = pipeWallRoughness * 3.2808399; + } + + public void convertSystemUnitToMetric() { + insideDiameter = insideDiameter / 3.2808399; + angle = angle / 0.01745329; + elevation = elevation / 3.2808399; + length = length / 3.2808399; + pipeWallRoughness = pipeWallRoughness / 3.2808399; + pressureDrop = pressureDrop * 1.48727E-05; + + } + + public String calcFlowRegime() { + + // Calc input volume fraction + area = (Math.PI / 4.0) * Math.pow(insideDiameter, 2.0); + if (system.getNumberOfPhases() != 1){ + supLiquidVel = system.getPhase(1).getFlowRate("ft3/sec") / area; + supGasVel = system.getPhase(0).getFlowRate("ft3/sec") / area; + supMixVel = supLiquidVel + supGasVel; + mixtureFroudeNumber = Math.pow(supMixVel, 2) / (32.174 * insideDiameter); + inputVolumeFractionLiquid = supLiquidVel / supMixVel; + /* + * Unlike the Gray or the Hagedorn and Brown correlations, the Beggs and Brill correlation + * requires that a flow pattern be determined. Since the original flow pattern map was created, + * it has been modified. We have used this modified flow pattern map for our calculations. The + * transition lines for the modified correlation are defined as follows + */ + } + else{ + if (system.hasPhaseType("gas")){ + supGasVel = system.getPhase(0).getFlowRate("ft3/sec") / area; + supMixVel = supGasVel; + inputVolumeFractionLiquid = 0.0; + flowPattern = "Single Phase"; + } + else{ + supLiquidVel = system.getPhase(1).getFlowRate("ft3/sec") / area; + supMixVel = supLiquidVel; + inputVolumeFractionLiquid = 1.0; + flowPattern = "Single Phase"; + } + System.out.println("Only one phase in the pipe"); + } + + + + double L1 = 316 * Math.pow(inputVolumeFractionLiquid, 0.302); + double L2 = 0.0009252 * Math.pow(inputVolumeFractionLiquid, -2.4684); + double L3 = 0.1 * Math.pow(inputVolumeFractionLiquid, -1.4516); + double L4 = 0.5 * Math.pow(inputVolumeFractionLiquid, -6.738); + + if (flowPattern != "Single Phase"){ + // The flow type can then be readily determined either from a representative flow pattern map or + // according to the following conditions + if ((inputVolumeFractionLiquid < 0.01 && mixtureFroudeNumber < L1) + || (inputVolumeFractionLiquid >= 0.01 && mixtureFroudeNumber < L2)) { + flowPattern = "SEGREGATED"; + } else if ((inputVolumeFractionLiquid < 0.4 && inputVolumeFractionLiquid >= 0.01 + && mixtureFroudeNumber <= L1 && mixtureFroudeNumber > L3) + || (inputVolumeFractionLiquid >= 0.4 && mixtureFroudeNumber <= L4 + && mixtureFroudeNumber > L3)) { + flowPattern = "INTERMITTENT"; + } else if ((inputVolumeFractionLiquid < 0.4 && mixtureFroudeNumber >= L4) + || (inputVolumeFractionLiquid >= 0.4 && mixtureFroudeNumber > L4)) { + flowPattern = "DISTRIBUTED"; + } else if (mixtureFroudeNumber > L2 && mixtureFroudeNumber < L3) { + flowPattern = "TRANSITION"; + } else if (inputVolumeFractionLiquid < 0.1 || inputVolumeFractionLiquid > 0.9) { + flowPattern = "Single Phase"; + } else { + logger.debug("Flow regime is not found"); + } + + + } + + A = (L3 - mixtureFroudeNumber) / (L3 - L2); + + return flowPattern; + } + + + public double calcHydrostaticPressureDifference() { + + /* + * Once the flow type has been determined then the liquid holdup can be calculated. Beggs and + * Brill divided the liquid holdup calculation into two parts. First the liquid holdup for + * horizontal flow, EL(0), is determined, and then this holdup is modified for inclined flow. + * EL(0) must be ≥ CL and therefore when EL(0) is smaller than CL, EL(0) is assigned a value of + * CL. There is a separate calculation of liquid holdup (EL(0)) for each flow type + */ + double B = 1 - A; + + double BThetta; + + if (flowPattern == "SEGREGATED") { + El = 0.98 * Math.pow(inputVolumeFractionLiquid, 0.4846) + / Math.pow(mixtureFroudeNumber, 0.0868); + } else if (flowPattern == "INTERMITTENT") { + El = 0.845 * Math.pow(inputVolumeFractionLiquid, 0.5351) + / (Math.pow(mixtureFroudeNumber, 0.0173)); + } else if (flowPattern == "DISTRIBUTED") { + El = 1.065 * Math.pow(inputVolumeFractionLiquid, 0.5824) + / (Math.pow(mixtureFroudeNumber, 0.0609)); + } else if (flowPattern == "TRANSITION") { + El = A * 0.98 * Math.pow(inputVolumeFractionLiquid, 0.4846) + / Math.pow(mixtureFroudeNumber, 0.0868) + + B * 0.845 * Math.pow(inputVolumeFractionLiquid, 0.5351) + / (Math.pow(mixtureFroudeNumber, 0.0173)); + } else if (flowPattern == "Single Phase") { + if (inputVolumeFractionLiquid < 0.1) { + El = inputVolumeFractionLiquid; + } else { + El = 1.0 - inputVolumeFractionLiquid; + } + } + + if (flowPattern != "Single Phase") { + // Oil surface tension + double SG = system.getPhase(1).getDensity("lb/ft3") / (1000 * 0.0624279606); + + double APIgrav = (141.5 / (SG)) - 131.0; + double sigma68 = 39.0 - 0.2571 * APIgrav; + double sigma100 = 37.5 - 0.2571 * APIgrav; + double sigma; + + if (system.getTemperature("C") * (9.0 / 5.0) + 32.0 > 100.0) { + sigma = sigma100; + } else if (system.getTemperature("C") * (9.0 / 5.0) + 32.0 < 68.0) { + sigma = sigma68; + } else { + sigma = sigma68 + (system.getTemperature("C") * (9.0 / 5.0) + 32.0 - 68.0) + * (sigma100 - sigma68) / (100.0 - 68.0); + } + double pressureCorrection = 1.0 - 0.024 * Math.pow((system.getPressure("psi")), 0.45); + sigma = sigma * pressureCorrection; + double Nvl = 1.938 * supLiquidVel + * Math.pow(system.getPhase(1).getDensity() * 0.0624279606 / (32.2 * sigma), 0.25); + double betta = 0; + + if (elevation > 0) { + if (flowPattern == "SEGREGATED") { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(0.011 * Math.pow(Nvl, 3.539) / (Math.pow(inputVolumeFractionLiquid, 3.768) + * Math.pow(mixtureFroudeNumber, 1.614))); + } else if (flowPattern == "INTERMITTENT") { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(2.96 * Math.pow(inputVolumeFractionLiquid, 0.305) + * Math.pow(mixtureFroudeNumber, 0.0978) / (Math.pow(Nvl, 0.4473))); + } else if (flowPattern == "DISTRIBUTED") { + betta = 0; + } + } else { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(4.70 * Math.pow(Nvl, 0.1244) / (Math.pow(inputVolumeFractionLiquid, 0.3692) + * Math.pow(mixtureFroudeNumber, 0.5056))); + } + betta = (betta > 0) ? betta : 0; + BThetta = 1 + betta * (Math.sin(1.8 * angle * 0.01745329) + - (1.0 / 3.0) * Math.pow(Math.sin(1.8 * angle * 0.01745329), 3.0)); + El = BThetta * El; + + mixtureDensity = + system.getPhase(1).getDensity("lb/ft3") * El + system.getPhase(0).getDensity() * (1 - El); + } + else{ + if (system.hasPhaseType("gas")){ + mixtureDensity = + system.getPhase(0).getDensity("lb/ft3"); + } + else{ + mixtureDensity = + system.getPhase(1).getDensity("lb/ft3"); + } + } + + + + hydrostaticPressureDrop = mixtureDensity * 32.2 * elevation; + + return hydrostaticPressureDrop; + } + + public double calcFrictionPressureLoss() { + double S = 0; + + double rhoNoSlip =0; + + double muNoSlip = 0; + + if (system.getNumberOfPhases() != 1) { + if (flowPattern != "Single Phase"){ + double y = Math.log(inputVolumeFractionLiquid / (Math.pow(El, 2))); + S = y / (-0.0523 + 3.18 * y - 0.872 * Math.pow(y, 2.0) + 0.01853 * Math.pow(y, 4)); + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")) * inputVolumeFractionLiquid + + (system.getPhase(0).getDensity("lb/ft3")) * (1 - inputVolumeFractionLiquid); + muNoSlip = system.getPhase(1).getViscosity("cP") * inputVolumeFractionLiquid + + (system.getPhase(0).getViscosity("cP")) * (1 - inputVolumeFractionLiquid); + } + else{ + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")) * inputVolumeFractionLiquid + + (system.getPhase(0).getDensity("lb/ft3")) * (1 - inputVolumeFractionLiquid); + muNoSlip = system.getPhase(1).getViscosity("cP") * inputVolumeFractionLiquid + + (system.getPhase(0).getViscosity("cP")) * (1 - inputVolumeFractionLiquid); + } + } + + else{ + if (system.hasPhaseType("gas")){ + rhoNoSlip = (system.getPhase(0).getDensity("lb/ft3")); + muNoSlip = (system.getPhase(0).getViscosity("cP")); + } + else{ + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")); + muNoSlip = (system.getPhase(1).getViscosity("cP")); + } + } + + double ReNoSlip = rhoNoSlip * supMixVel * insideDiameter*(16/(3.28*3.28)) / (0.001*muNoSlip); + + double E = pipeWallRoughness / insideDiameter; + + // Haaland equation + double frictionFactor = Math.pow(1 / (-1.8 * Math.log10((E / 3.7) + (6.9 / ReNoSlip))), 2); + double frictionTwoPhase = frictionFactor * Math.exp(S); + + frictionPressureLoss = frictionTwoPhase * Math.pow(supMixVel, 2) * rhoNoSlip * (length) + / (2*insideDiameter); + return frictionPressureLoss; + } + + public double calcPressureDrop() { + convertSystemUnitToImperial(); + calcFlowRegime(); + hydrostaticPressureDrop = calcHydrostaticPressureDifference(); + frictionPressureLoss = calcFrictionPressureLoss(); + pressureDrop = (hydrostaticPressureDrop + frictionPressureLoss); + convertSystemUnitToMetric(); + return pressureDrop; + } + + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + length = length / numberOfIncrements; + system = inStream.getThermoSystem().clone(); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + system.initProperties(); + double enthalpyInlet = system.getEnthalpy(); + for (int i = 1; i <= numberOfIncrements; i++) { + System.out.println(system.getNumberOfPhases()); + System.out.println(system.hasPhaseType("gas")); + System.out.println(system.hasPhaseType("oil")); + System.out.println(system.getFlowRate("kg/hr")); + System.out.println(system.getComponent("methane").getz()); + //System.out.println(system.getComponent("n-heptane").getz()); + inletPressure = system.getPressure(); + pressureDrop = calcPressureDrop(); + + + pressureOut = inletPressure - pressureDrop; + system.setPressure(pressureOut); + testOps.PHflash(enthalpyInlet); + system.initProperties(); + System.out.println(system.getTemperature("C")); + } + outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + System.out.println(pressureOut); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } + + public double getSuperficialVelocity() { + return getInletStream().getThermoSystem().getFlowRate("kg/sec") + / getInletStream().getThermoSystem().getDensity("kg/m3") + / (Math.PI / 4.0 * Math.pow(insideDiameter, 2.0)); + } + + /** {@inheritDoc} */ + @Override + public FlowSystemInterface getPipe() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) {} + + /** + *
+ * Getter for the field length
.
+ *
+ * Setter for the field length
.
+ *
+ * getDiameter. + *
+ * + * @return the diameter + */ + public double getDiameter() { + return insideDiameter; + } + + public String getFlowRegime() { + return flowPattern; + } + + /** + *+ * setDiameter. + *
+ * + * @param diameter the diameter to set + */ + public void setDiameter(double diameter) { + insideDiameter = diameter; + } + + + + /** + *
+ * Setter for the field pipeWallRoughness
.
+ *
+ * Getter for the field inletElevation
.
+ *
+ * Setter for the field inletElevation
.
+ *
+ * Getter for the field outletElevation
.
+ *
+ * Setter for the field outletElevation
.
+ *
+ * main. + *
+ * + * @param name an array of {@link java.lang.String} objects + */ + public static void main(String[] name) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 15.0), 10); + testSystem.addComponent("methane", 5, "MSm^3/day"); + testSystem.addComponent("n-heptane", 5, "MSm^3/day"); + testSystem.setMixingRule(2); + testSystem.init(0); + + Stream stream_1 = new Stream("Stream1", testSystem); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(stream_1); + pipe.setDiameter(1.017112); + pipe.setPipeWallRoughness(5e-6); + pipe.setLength(10000); + pipe.setElevation(0.0); + pipe.setAngle(0); + pipe.setNumberOfIncrements(2); + + + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + + + } + + /** + *
+ * Getter for the field pressureOutLimit
.
+ *
+ * Setter for the field pressureOutLimit
.
+ *
+ * Setter for the field flowLimit
.
+ *
- * getIdealLiquidDensity. - *
- * - * @param {@link java.lang.String} object Supported units are kg/m3 and gr/cm3 - * - * Return normal liquid density of fluid - * + * Get normal liquid density of fluid. + * + * @param unit {@link java.lang.String} Supported units are kg/m3 and gr/cm3 */ public double getIdealLiquidDensity(String unit); } diff --git a/src/main/java/neqsim/thermo/system/SystemThermo.java b/src/main/java/neqsim/thermo/system/SystemThermo.java index 04e1d2535e..31b59e0339 100644 --- a/src/main/java/neqsim/thermo/system/SystemThermo.java +++ b/src/main/java/neqsim/thermo/system/SystemThermo.java @@ -3923,6 +3923,7 @@ public void setFluidName(java.lang.String fluidName) { this.fluidName = fluidName; } + /** {@inheritDoc} */ @Override public void addToComponentNames(java.lang.String name) { for (int j = 0; j < componentNames.size(); j++) { @@ -5086,11 +5087,18 @@ public void setForcePhaseTypes(boolean forcePhaseTypes) { this.forcePhaseTypes = forcePhaseTypes; } + + /** {@inheritDoc} */ @Override public SystemProperties getProperties() { return new SystemProperties(this); } + + /** + * @param molefractions + * @param type + */ private void setMolarFractions(double[] molefractions, String type) { double totalFlow = getTotalNumberOfMoles(); if (totalFlow < 1e-100) { @@ -5231,9 +5239,12 @@ public void addOilFractions(String[] charNames, double[] charFlowrate, double[] 12); } - /* - *getIdealLiquidDensity.
Return normal liquid density of fluid in given unit - * + + /** + * Return normal liquid density of fluid in given unit. + * + * @param unit Supported units are gr/cm3 and kg/m3. Defaults to gr/cm3. + * @return double Density of fluid. */ public double getIdealLiquidDensity(String unit) { double normalLiquidDensity = 0.0; @@ -5242,11 +5253,11 @@ public double getIdealLiquidDensity(String unit) { normalLiquidDensity += getComponent(i).getNormalLiquidDensity() * getComponent(i).getz() * getComponent(i).getMolarMass() / molarMass; } - if (unit.equals("gr/cm3")) + if (unit.equals("gr/cm3")) { return normalLiquidDensity; - else if (unit.equals("kg/m3")) + } else if (unit.equals("kg/m3")) { return normalLiquidDensity * 1000.0; - else { + } else { logger.error("unit not supported: " + unit); return normalLiquidDensity; } From 32298f3b6c70dd1f4bd0e3efa547d3fba29fed9e Mon Sep 17 00:00:00 2001 From: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> Date: Wed, 9 Nov 2022 12:06:13 +0100 Subject: [PATCH 035/171] Change method to public (#564) --- .../processEquipment/heatExchanger/HeatExchanger.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java index 32b587ef85..5b7e16c1a7 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java @@ -551,14 +551,14 @@ public void setThermalEffectiveness(double thermalEffectiveness) { /** * @return String */ - String getFlowArrangement() { + public String getFlowArrangement() { return flowArrangement; } /** * @param flowArrangement name of flow arrangement */ - void setFlowArrangement(String flowArrangement) { + public void setFlowArrangement(String flowArrangement) { this.flowArrangement = flowArrangement; } From 1a5be1d2ff52377ba926145e814fe28a3a73237e Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Tue, 15 Nov 2022 10:42:50 +0100 Subject: [PATCH 036/171] 566 set flow rate from a splitter (#567) * added flow method to splitter * updated valve calc --- .../processEquipment/splitter/Splitter.java | 77 +++++++++++++++++-- .../valve/ThrottlingValve.java | 10 ++- .../splitter/ComponentSplitterTest.java | 52 ++++++++++++- 3 files changed, 129 insertions(+), 10 deletions(-) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java b/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java index c9d6f03b58..e75a879861 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java @@ -30,6 +30,10 @@ public class Splitter extends ProcessEquipmentBaseClass implements SplitterInter StreamInterface[] splitStream; protected int splitNumber = 1; double[] splitFactor = new double[1]; + double[] flowRates; + String flowUnit = "mole/sec"; + + /** *@@ -96,6 +100,7 @@ public void setSplitNumber(int i) { splitNumber = i; splitFactor = new double[splitNumber]; splitFactor[0] = 1.0; + setInletStream(inletStream); } /** @@ -121,18 +126,71 @@ public void setSplitFactors(double[] splitFact) { setInletStream(inletStream); } + /** + *
+ * setFlowRates. + *
+ * + * @param setFlowRates an array of {@link double} objects + */ + public void setFlowRates(double[] flowRates, String flowUnit) { + if (flowRates.length != splitNumber) { + setInletStream(inletStream); + } + this.flowRates = flowRates; + this.flowUnit = flowUnit; + double sum = 0.0; + for (int i = 0; i < flowRates.length; i++) { + if (flowRates[i] > -0.1) { + sum += flowRates[i]; + } + } + + for (int i = 0; i < flowRates.length; i++) { + if (flowRates[i] < -0.1) { + flowRates[i] = inletStream.getFlowRate(flowUnit) - sum; + } + } + splitFactor = new double[flowRates.length]; + for (int i = 0; i < flowRates.length; i++) { + splitFactor[i] = flowRates[i] / sum; + } + splitNumber = splitFactor.length; + setInletStream(inletStream); + } + + public void calcSplitFactors() { + double sum = 0.0; + for (int i = 0; i < splitNumber; i++) { + if (flowRates[i] > -0.1) { + splitFactor[i] = flowRates[i] / inletStream.getFlowRate(flowUnit); + sum += splitFactor[i]; + } + } + + for (int i = 0; i < splitNumber; i++) { + if (flowRates[i] < -0.1) { + splitFactor[i] = 1 - 0 - sum; + } + } + + + } + /** {@inheritDoc} */ @Override public void setInletStream(StreamInterface inletStream) { this.inletStream = inletStream; - splitStream = new Stream[splitNumber]; - try { - for (int i = 0; i < splitNumber; i++) { - // System.out.println("splitting...." + i); - splitStream[i] = new Stream("Split Stream", inletStream.getThermoSystem().clone()); + if (splitStream == null || splitStream.length != splitNumber) { + splitStream = new Stream[splitNumber]; + try { + for (int i = 0; i < splitNumber; i++) { + // System.out.println("splitting...." + i); + splitStream[i] = new Stream("Split Stream", inletStream.getThermoSystem().clone()); + } + } catch (Exception ex) { + logger.error(ex.getMessage()); } - } catch (Exception ex) { - logger.error(ex.getMessage()); } } @@ -146,6 +204,11 @@ public StreamInterface getSplitStream(int i) { @Override public void run(UUID id) { double totSplit = 0.0; + + if (flowRates != null) { + calcSplitFactors(); + } + for (int i = 0; i < splitNumber; i++) { if (splitFactor[i] < 0) { logger.debug("split factor negative = " + splitFactor[i]); diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java index 1d20230ba1..beb3887c1c 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java @@ -24,7 +24,7 @@ public class ThrottlingValve extends TwoPortEquipment implements ValveInterface SystemInterface thermoSystem; double pressure = 0.0; - private double Cv = 1.0; + private double Cv; private double maxMolarFlow = 1000.0; private double minMolarFlow = 0.0; private double percentValveOpening = 100.0; @@ -194,7 +194,15 @@ public void run(UUID id) { * Math.sqrt( (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) / thermoSystem.getDensity())); + valveCvSet = true; } + + percentValveOpening = inStream.getThermoSystem().getTotalNumberOfMoles() / (getCv()) * 100.0 + / Math.sqrt( + (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) + / thermoSystem.getDensity()); + + molarFlow = getCv() * getPercentValveOpening() / 100.0 * Math.sqrt( (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) diff --git a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java index effb512df6..f0068ac2eb 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.system.SystemSrkEos; @@ -45,8 +46,55 @@ public void testRun() { processOps.run(); //((StreamInterface)processOps.getUnit("stream 1")).displayResult(); //((StreamInterface)processOps.getUnit("stream 2")).displayResult(); - assertEquals(((StreamInterface)processOps.getUnit("stream 1")).getFluid().getComponent("methane").getx(), 1.0, 1e-6); - assertEquals(((StreamInterface)processOps.getUnit("stream 2")).getFluid().getComponent("methane").getx(), 0.0, 1e-6); + assertEquals(((StreamInterface) processOps.getUnit("stream 1")).getFluid() + .getComponent("methane").getx(), 1.0, 1e-6); + assertEquals(((StreamInterface) processOps.getUnit("stream 2")).getFluid() + .getComponent("methane").getx(), 0.0, 1e-6); + } + + @Test + public void testRunSplitter() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("propane", 10.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + + Splitter splitter = new Splitter(inletStream); + splitter.setSplitNumber(2); + splitter.setFlowRates(new double[] {4.0, 1.0}, "MSm3/day"); + // splitter.setFlowRates(new double[] {-1.0, 1.0}, "MSm3/day"); + + StreamInterface stream1 = splitter.getSplitStream(0); + StreamInterface stream2 = splitter.getSplitStream(1); + + ThrottlingValve valve1 = new ThrottlingValve(stream1); + valve1.setCv(500.0); + valve1.setOutletPressure(5.0); + + processOps.add(inletStream); + processOps.add(splitter); + processOps.add(stream1); + processOps.add(stream2); + processOps.add(valve1); + + processOps.run(); + + assertEquals(stream1.getFlowRate("MSm3/day"), 4.0, 1e-6); + assertEquals(stream2.getFlowRate("MSm3/day"), 1.0, 1e-6); + System.out.println("valve opening " + valve1.getPercentValveOpening()); + + splitter.setFlowRates(new double[] {-1, 4.9}, "MSm3/day"); + processOps.run(); + + System.out.println("valve opening " + valve1.getPercentValveOpening()); + assertEquals(0.1, splitter.getSplitStream(0).getFlowRate("MSm3/day"), 1e-6); + assertEquals(4.9, splitter.getSplitStream(1).getFlowRate("MSm3/day"), 1e-6); } } From 5f5951037ed92cffacf66045fef880b005eaf0d2 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Wed, 16 Nov 2022 13:52:48 +0100 Subject: [PATCH 037/171] Create build8.yml --- .github/workflows/build8.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/build8.yml diff --git a/.github/workflows/build8.yml b/.github/workflows/build8.yml new file mode 100644 index 0000000000..7efc29621a --- /dev/null +++ b/.github/workflows/build8.yml @@ -0,0 +1,20 @@ +name: Release to Github Packages + +on: + push: + tags: + - v* + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + run: + mvn --settings settingsJava8.xml -Drevision=${{ steps.get_version.outputs.VERSION }} deploy From c01f8f743ffbfe5e1d0877a3b60536209cf6e296 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Wed, 16 Nov 2022 13:54:56 +0100 Subject: [PATCH 038/171] Update build8.yml --- .github/workflows/build8.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build8.yml b/.github/workflows/build8.yml index 7efc29621a..fbb96da3ec 100644 --- a/.github/workflows/build8.yml +++ b/.github/workflows/build8.yml @@ -1,9 +1,8 @@ -name: Release to Github Packages +name: Build maven java 8 on: push: - tags: - - v* + branches: [ master ] jobs: build: @@ -16,5 +15,10 @@ jobs: uses: actions/setup-java@v1 with: java-version: 8 - run: - mvn --settings settingsJava8.xml -Drevision=${{ steps.get_version.outputs.VERSION }} deploy + - name: Build with Maven + run: mvn -B package --file pomJava8.xml + - run: mkdir staging && cp target/*.jar staging + - uses: actions/upload-artifact@v2 + with: + name: jarfiles + path: staging From 1a857e5f582e1a24d88e3866213c7aeab4d6f473 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Wed, 16 Nov 2022 13:58:09 +0100 Subject: [PATCH 039/171] Update pomJava8.xml --- pomJava8.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pomJava8.xml b/pomJava8.xml index 951691a48f..64775487d6 100644 --- a/pomJava8.xml +++ b/pomJava8.xml @@ -173,7 +173,8 @@
* Constructor for SeparatorTest.
@@ -82,7 +86,7 @@ && getThermoSystem().getPhase(0).getPhaseTypeName().equals("gas")) {
GOR[i] = Sm3gas[i] / oilVolumeStdCond;
Bofactor[i] = m3oil[i] / oilVolumeStdCond;
}
- System.out.println("GOR " + getGOR()[i] + " Bo " + Bofactor[i]);
+ logger.info("GOR " + getGOR()[i] + " Bo " + Bofactor[i]);
}
}
diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java b/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java
index 8eed8db47f..eab0c253b8 100644
--- a/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java
+++ b/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java
@@ -97,7 +97,7 @@ public void runCalc() {
}
for (int i = 0; i < getPressures().length; i++) {
- System.out.println(
+ logger.info(
"pressure " + getPressures()[i] + " relativeOil volume " + getRelativeOilVolume()[i]);
}
}
diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java
index 3a0e766885..5febbd435d 100644
--- a/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java
+++ b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java
@@ -523,7 +523,7 @@ public static void main(String args[]){
testSystem.addComponent("n-heptane", 0.0055, "MSm^3/day");
testSystem.setMixingRule(2);
testSystem.init(0);
- Stream inputStream = new Stream(testSystem);
+ Stream inputStream = new Stream("inputStream", testSystem);
SevereSlugAnalyser mySevereSlug4= new SevereSlugAnalyser (inputStream, 0.05, 167, 7.7, 2,100000.0,20.0, 200.0,20000);
logger.debug(inputStream.getFlowRate("kg/sec"));
mySevereSlug4.getPredictedFlowRegime();
diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java
index a007d12815..04efe5dfbc 100644
--- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java
+++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java
@@ -3,6 +3,8 @@
import java.util.ArrayList;
import java.util.Objects;
import java.util.UUID;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass;
import neqsim.processSimulation.processEquipment.heatExchanger.Heater;
import neqsim.processSimulation.processEquipment.mixer.Mixer;
@@ -22,6 +24,8 @@
*/
public class DistillationColumn extends ProcessEquipmentBaseClass implements DistillationInterface {
private static final long serialVersionUID = 1000;
+ static Logger logger = LogManager.getLogger(DistillationColumn.class);
+
private boolean doInitializion = true;
boolean hasReboiler = false;
boolean hasCondenser = false;
@@ -362,7 +366,7 @@ public void run(UUID id) {
err += Math.abs(
oldtemps[i] - ((MixerInterface) trays.get(i)).getThermoSystem().getTemperature());
}
- System.out.println("error iter " + err + " iteration " + iter);
+ logger.info("error iter " + err + " iteration " + iter);
// massBalanceCheck();
} while (err > 1e-4 && err < errOld && iter < 10); // && !massBalanceCheck());
diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
index 28fd9512f7..88e0f29720 100644
--- a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
+++ b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
@@ -2,6 +2,8 @@
import java.util.ArrayList;
import java.util.UUID;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass;
import neqsim.processSimulation.processEquipment.mixer.MixerInterface;
import neqsim.processSimulation.processEquipment.stream.Stream;
@@ -19,6 +21,7 @@
*/
public class Recycle extends ProcessEquipmentBaseClass implements MixerInterface {
private static final long serialVersionUID = 1000;
+ static Logger logger = LogManager.getLogger(Recycle.class);
protected ArrayList main.
+ * VirtualStream class.
+ *
* Constructor for Recycle.
@@ -45,6 +50,9 @@ public Recycle() {
this("Recycle");
}
+ public void resetIterations() {
+ iterations = 0;
+ }
/**
*
* Constructor for Recycle.
@@ -248,12 +256,12 @@ public void run(UUID id) {
* }
*/
double enthalpy = 0.0;
- // logger.info("flow rate old in recycle " +
- // outletStream.getFlowRate("kg/hr"));
+ logger.info("flow rate old in recycle " +
+ outletStream.getFlowRate("kg/hr"));
// ((Stream) streams.get(0)).getThermoSystem().display();
SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone();
- // logger.info("total number of moles " +
- // thermoSystem2.getTotalNumberOfMoles());
+ logger.info("total number of moles " +
+ thermoSystem2.getTotalNumberOfMoles());
mixedStream.setThermoSystem(thermoSystem2);
ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2);
if (streams.size() > 1) {
@@ -284,8 +292,8 @@ public void run(UUID id) {
lastIterationStream = (Stream) mixedStream.clone();
outletStream.setThermoSystem(mixedStream.getThermoSystem());
outletStream.setCalculationIdentifier(id);
- // logger.info("flow rate new in recycle " +
- // outletStream.getFlowRate("kg/hr"));
+ logger.info(
+ "flow rate new in recycle " + outletStream.getFlowRate("kg/hr") + " iter " + iterations);
// logger.info("enthalpy: " +
// mixedStream.getThermoSystem().getEnthalpy());
@@ -325,8 +333,7 @@ public double massBalanceCheck() {
error += Math
.abs(mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx()
- lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx())
- + Math.abs(mixedStream.getFlowRate("kg/sec") - lastIterationStream.getFlowRate("kg/sec")
- + Math.abs(mixedStream.getTemperature() - lastIterationStream.getTemperature()));
+ + Math.abs(mixedStream.getFlowRate("kg/sec") - lastIterationStream.getFlowRate("kg/sec"));
}
return Math.abs(error);
@@ -428,7 +435,7 @@ public void setPriority(int priority) {
/** {@inheritDoc} */
@Override
public boolean solved() {
- if (error < tolerance) {
+ if (error < tolerance && iterations > 1) {
return true;
} else {
return false;
diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java b/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java
index 227bf53aed..6c43cc2f35 100644
--- a/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java
+++ b/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java
@@ -34,6 +34,7 @@ public RecycleController() {}
*/
public void init() {
for (Recycle recyc : recycleArray) {
+ recyc.resetIterations();
if (recyc.getPriority() < minimumPriorityLevel) {
minimumPriorityLevel = recyc.getPriority();
}
diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java
index beb3887c1c..603bbbb536 100644
--- a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java
+++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java
@@ -178,7 +178,8 @@ public void run(UUID id) {
}
// System.out.println("enthalpy inn.." + enthalpy);
// thermoOps.PHflash(enthalpy, 0);
- if (isIsoThermal() || Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6) {
+ if (isIsoThermal() || Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6
+ || thermoSystem.getNumberOfMoles() < 1e-12) {
thermoOps.TPflash();
} else {
thermoOps.PHflash(enthalpy, 0);
@@ -210,7 +211,6 @@ public void run(UUID id) {
if (Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6) {
molarFlow = inStream.getThermoSystem().getTotalNumberOfMoles();
}
- // System.out.println("molar flow " + molarFlow);
inStream.getThermoSystem().setTotalNumberOfMoles(molarFlow);
inStream.getThermoSystem().init(3);
diff --git a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
index f892b10324..89ec51651f 100644
--- a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
+++ b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
@@ -108,6 +108,7 @@ public void testRunSplitter() {
public void testRunSplitter2() {
testSystem = new SystemSrkEos(298.0, 55.0);
testSystem.addComponent("methane", 100.0);
+ testSystem.addComponent("ethane", 10.0);
processOps = new ProcessSystem();
@@ -158,21 +159,36 @@ public void testRunSplitter2() {
assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6);
assertEquals(0.1, resycStream1.getFlowRate("MSm3/day"), 1e-6);
- assertEquals(8.43553108874272, valve1.getPercentValveOpening(), 1e-2);
+ // assertEquals(8.43553108874272, valve1.getPercentValveOpening(), 1e-2);
+
splitter.setFlowRates(new double[] {5.0, 0.5}, "MSm3/day");
processOps.run();
-
+
assertEquals(5.00000000, exportStream.getFlowRate("MSm3/day"), 1e-4);
assertEquals(0.5, resycStream1.getFlowRate("MSm3/day"), 1e-4);
- assertEquals(41.9139926125338, valve1.getPercentValveOpening(), 1e-2);
+ // assertEquals(41.9139926125338, valve1.getPercentValveOpening(), 1e-2);
- splitter.setFlowRates(new double[] {-1, 0.5}, "MSm3/day");
+ splitter.setFlowRates(new double[] {-1, 2.5}, "MSm3/day");
processOps.run();
assertEquals(5.00000000, exportStream.getFlowRate("MSm3/day"), 1e-4);
- assertEquals(0.5, resycStream1.getFlowRate("MSm3/day"), 1e-4);
+ assertEquals(2.5, resycStream1.getFlowRate("MSm3/day"), 1e-4);
+ splitter.setFlowRates(new double[] {5.0, 0.0}, "MSm3/day");
+ processOps.run();
+ assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6);
+ assertEquals(0.0, resycStream1.getFlowRate("MSm3/day"), 1e-6);
+
+ splitter.setFlowRates(new double[] {5.0, 3.0}, "MSm3/day");
+ processOps.run();
+ assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6);
+ assertEquals(3.0, resycStream1.getFlowRate("MSm3/day"), 1e-6);
+
+ splitter.setFlowRates(new double[] {-1, 0.0}, "MSm3/day");
+ processOps.run();
+ assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6);
+ assertEquals(0.0, resycStream1.getFlowRate("MSm3/day"), 1e-6);
}
}
From 385f9a990a0edd35b94fe6d0d2fb58247357333e Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Fri, 18 Nov 2022 22:24:21 +0100
Subject: [PATCH 075/171] Fix splitter 2 (#581)
* fix minor bug split stream
* fix bug
* bug fix
* fix splitter bugs
* update recycle accuracy
---
.../processEquipment/util/Recycle.java | 81 +++++++++++++++----
.../splitter/ComponentSplitterTest.java | 5 +-
2 files changed, 68 insertions(+), 18 deletions(-)
diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
index 7f9eb6bfd3..9b5dcea893 100644
--- a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
+++ b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java
@@ -28,17 +28,29 @@ public class Recycle extends ProcessEquipmentBaseClass implements MixerInterface
protected StreamInterface mixedStream;
StreamInterface lastIterationStream = null;
private StreamInterface outletStream = null;
- private double tolerance = 1e-6;
- private double error = 1e6;
+ private double tolerance = 1e-4;
private int priority = 100;
+ private double error = 1e10, errorFlow = 1e10;
boolean firstTime = true;
int iterations = 0;
int maxIterations = 10;
+
+ double compositionAccuracy = 1.0;
+ double temperatureAccuracy = 1.0;
+ double flowAccuracy = 1.0;
- double compositionAccuracy = 5.0;
- double temperatureAccuracy = 5.0;
- double flowAccuracy = 5.0;
+ public void setCompositionAccuracy(double compositionAccuracy) {
+ this.compositionAccuracy = compositionAccuracy;
+ }
+
+ public void setTemperatureAccuracy(double temperatureAccuracy) {
+ this.temperatureAccuracy = temperatureAccuracy;
+ }
+
+ public void setFlowAccuracy(double flowAccuracy) {
+ this.flowAccuracy = flowAccuracy;
+ }
/**
*
@@ -53,6 +65,7 @@ public Recycle() {
public void resetIterations() {
iterations = 0;
}
+
/**
*
* Constructor for Recycle.
@@ -256,12 +269,12 @@ public void run(UUID id) {
* }
*/
double enthalpy = 0.0;
- logger.info("flow rate old in recycle " +
- outletStream.getFlowRate("kg/hr"));
+
+ logger.info("flow rate old in recycle " + outletStream.getFlowRate("kg/hr"));
// ((Stream) streams.get(0)).getThermoSystem().display();
SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone();
- logger.info("total number of moles " +
- thermoSystem2.getTotalNumberOfMoles());
+ logger.info("total number of moles " + thermoSystem2.getTotalNumberOfMoles());
+
mixedStream.setThermoSystem(thermoSystem2);
ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2);
if (streams.size() > 1) {
@@ -288,7 +301,9 @@ public void run(UUID id) {
}
mixedStream.setCalculationIdentifier(id);
setError(massBalanceCheck());
- logger.info(name + " recycle error: " + getError());
+ setErrorFlow(massBalanceCheck2());
+ logger.info(name + " comp recycle error: " + getError());
+ logger.info(name + " flow recycle error: " + getErrorFlow());
lastIterationStream = (Stream) mixedStream.clone();
outletStream.setThermoSystem(mixedStream.getThermoSystem());
outletStream.setCalculationIdentifier(id);
@@ -306,6 +321,26 @@ public void run(UUID id) {
setCalculationIdentifier(id);
}
+ /**
+ *
+ * massBalanceCheck.
+ *
* massBalanceCheck.
@@ -330,10 +365,9 @@ public double massBalanceCheck() {
// lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx());
// logger.info("x new " +
// mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx());
- error += Math
- .abs(mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx()
- - lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx())
- + Math.abs(mixedStream.getFlowRate("kg/sec") - lastIterationStream.getFlowRate("kg/sec"));
+ error += Math.abs(mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx()
+ - lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx());
+
}
return Math.abs(error);
@@ -410,6 +444,21 @@ public void setError(double error) {
this.error = error;
}
+ /**
+ *
+ * Setter for the field
* Getter for the field Getter for the field CalculationResult class. Constructor for CalculationResult. Constructor for CalculationResult. Constructor for ChemicalReactionFactory. Constructor for InterphaseTransportCoefficientBaseClass. Constructor for InterphaseOnePhase. Constructor for InterphasePipeFlow. Constructor for InterphaseTwoPhase. Constructor for InterphaseAnnularFlow. Constructor for InterphaseDropletFlow. Constructor for InterphaseStratifiedFlow. Constructor for InterphaseTwoPhasePipeFlow. Constructor for InterphasePackedBed. Constructor for InterphaseReactorFlow. Constructor for InterphaseStirredCellFlow.
* getDiffusionCoefficient.
* Constructor for SimulationBaseClass.
* run
* Constructor for ControllerDeviceBaseClass. Constructor for CostEstimateBaseClass. Constructor for MeasurementDeviceBaseClass. Constructor for MultiPhaseMeter. Constructor for TemperatureTransmitter. WellAllocator class. Constructor for WellAllocator. Constructor for WellAllocator. Constructor for WellAllocator. Setter for the field Setter for the field main. Getter for the field Setter for the field FluidSevereSlug class. Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field Getter for the field Pipe class. Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field getArea. SevereSlugAnalyser class. setSuperficialLiquidVelocity. getSuperficialLiquidVelocity. setSuperficialGasVelocity. getSuperficialGasVelocity. Getter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field Setter for the field Getter for the field gasConst. slugHoldUp. stratifiedHoldUp. runSevereSlug. checkFlowRegime. getMeasuredValue. getPredictedFlowRegime. getMeasuredValue. getPredictedFlowRegime. main.
* getPressure.
* isSetWaterInDryGas. getMechanicalDesign. Getter for the field Setter for the field CompressorPropertyProfile class. Constructor for CompressorPropertyProfile. addFluid. isActive. setActive. Getter for the field Setter for the field
* Constructor for Reboiler.
*
* Constructor for VLSolidTray.
* Getter for the field Setter for the field
* getOutStream.
*
* getOutStream.
* removeInputStream. getSuperficialVelocity. Setter for the field Setter for the field Setter for the field convertSystemUnitToImperial. convertSystemUnitToMetric. calcFlowRegime. calcHydrostaticPressureDifference. calcFrictionPressureLoss. calcPressureDrop. getSuperficialVelocity. getFlowRegime. Getter for the field getMechanicalDesign. Constructor for GasTurbine. getMechanicalDesign.
* Setter for the field
* Constructor for Well.
* getMechanicalDesign.
* Setter for the field getMechanicalDesign.
* Setter for the field getMechanicalDesign.
* Setter for the field gMechanicalDesign. getMechanicalDesign. getMechanicalDesign. getMechanicalDesign. getMechanicalDesign. getMechanicalDesign. setSplitFactors. Setter for the field Getter for the field errorFlow
.
+ * priority
.
@@ -435,7 +484,9 @@ public void setPriority(int priority) {
/** {@inheritDoc} */
@Override
public boolean solved() {
- if (error < tolerance && iterations > 1) {
+
+ if (error < tolerance && errorFlow < flowAccuracy && iterations > 1) {
+
return true;
} else {
return false;
diff --git a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
index 89ec51651f..440af3438b 100644
--- a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
+++ b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java
@@ -141,6 +141,7 @@ public void testRunSplitter2() {
Recycle recycle1 = new Recycle("recycle 1");
recycle1.addStream(valve1.getOutletStream());
recycle1.setOutletStream(streamresycl);
+ recycle1.setFlowAccuracy(1e-6);
StreamInterface exportStream = splitter.getSplitStream(0);
@@ -161,11 +162,9 @@ public void testRunSplitter2() {
assertEquals(0.1, resycStream1.getFlowRate("MSm3/day"), 1e-6);
// assertEquals(8.43553108874272, valve1.getPercentValveOpening(), 1e-2);
-
-
splitter.setFlowRates(new double[] {5.0, 0.5}, "MSm3/day");
processOps.run();
-
+
assertEquals(5.00000000, exportStream.getFlowRate("MSm3/day"), 1e-4);
assertEquals(0.5, resycStream1.getFlowRate("MSm3/day"), 1e-4);
// assertEquals(41.9139926125338, valve1.getPercentValveOpening(), 1e-2);
From 07d7aabf41e103227d45b303e2818c65b1b59806 Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Fri, 18 Nov 2022 22:34:37 +0100
Subject: [PATCH 076/171] Update release_with_jars.yml
---
.github/workflows/release_with_jars.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release_with_jars.yml b/.github/workflows/release_with_jars.yml
index d57163c53e..b1d5703176 100644
--- a/.github/workflows/release_with_jars.yml
+++ b/.github/workflows/release_with_jars.yml
@@ -108,7 +108,7 @@ jobs:
- name: Create release v${{ needs.get_versions.outputs.version_8 }}
uses: ncipollo/release-action@v1.11.2
with:
- name: Neqsim ${{ needs.get_versions.outputs.version_8 }}
+ name: NeqSim ${{ needs.get_versions.outputs.version_8 }}
tag: v${{ needs.get_versions.outputs.version_8 }}
draft: true
generateReleaseNotes: true
From bf3066f3d050060e306521491a303e4a60f83b02 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, 22 Nov 2022 11:53:10 +0100
Subject: [PATCH 077/171] chore: update workflow to publishj jars to
neqsimpython (#582)
* Update release_with_jars.yml
---
.github/workflows/release_with_jars.yml | 41 +++++++++++++++++--------
1 file changed, 28 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/release_with_jars.yml b/.github/workflows/release_with_jars.yml
index b1d5703176..a505d86990 100644
--- a/.github/workflows/release_with_jars.yml
+++ b/.github/workflows/release_with_jars.yml
@@ -1,8 +1,9 @@
name: Create draft release with jar artifacts
-# Workflow is triggered when pom-files are updated in master-branch.
-# Packages jar-files in java 8 and java 11 environments if both pom-files have the same version number.
-# If both versions are packaged correctly a draft release is made and the jar-files are added as artifacts.
-
+# Workflow is triggered when any pom-file is updated in master-branch
+# If both pom-files have the same version number it
+# - builds NeqSim-jars both in Java 8 and Java 11
+# - creates a new release and uploads the jars as artifacts
+# - makes a new branch in neqsimpython and updates the jar-files used there.
on:
workflow_dispatch:
@@ -39,11 +40,7 @@ jobs:
- name: Fix java 8 version number
id: java-8-fix
run: echo "version=$(echo ${{ steps.java-8.outputs.version }} | cut -f 1 -d "-")" >> $GITHUB_OUTPUT
-
- - run: echo "Java 8 pom file version number ${{ steps.java-8.outputs.version }}"
- - run: echo "Java 8 pom file version number trimmed ${{ steps.java-8-fix.outputs.version }}"
- - run: echo "Java pom file version number ${{ steps.java.outputs.version }}"
-
+
compile_java_8:
name: Build Neqsim ${{ needs.get_versions.outputs.version_8 }} with java 8
needs: get_versions
@@ -111,10 +108,28 @@ jobs:
name: NeqSim ${{ needs.get_versions.outputs.version_8 }}
tag: v${{ needs.get_versions.outputs.version_8 }}
draft: true
- generateReleaseNotes: true
-
+ generateReleaseNotes: true
skipIfReleaseExists: true
- artifactErrorsFailBuild: true
-
+ artifactErrorsFailBuild: true
artifacts: "*.jar"
artifactContentType: application/java-archive
+
+ # Needs to delete the old jars manually
+
+ - run: mkdir lib && cp *.jar lib/
+ - run: cd lib && mkdir libj8 && mv *Java8.jar libj8/ && cd ..
+
+ # Will fail if branch NeqSim-jars-updated-N.N.N already exists
+ - name: Push files to neqsimpython repo
+ uses: dmnemec/copy_file_to_another_repo_action@v1.1.1
+ env:
+ API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
+ with:
+ source_file: lib
+ destination_repo: 'equinor/neqsimpython'
+ destination_folder: neqsim/
+ destination_branch: NeqSim-jars-updated-${{ needs.get_versions.outputs.version_8 }}
+ commit_message: 'chore: updated jar-files'
+ user_email: 'asmf@equinor.com'
+ user_name: 'asmfstatoil'
+
From b5fc7decf69b0f4cae3d7c737969e7ccc7aa71e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?=
<34712686+asmfstatoil@users.noreply.github.com>
Date: Thu, 24 Nov 2022 09:23:28 +0100
Subject: [PATCH 078/171] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 562691f621..7049cdb888 100644
--- a/README.md
+++ b/README.md
@@ -4,16 +4,16 @@
![Build maven](https://github.com/equinor/neqsim/workflows/Build%20maven/badge.svg?branch=master)
[![Known Vulnerabilities](https://snyk.io/test/github/equinor/neqsim/badge.svg)](https://snyk.io/test/github/equinor/neqsim)
-NeqSim is the main part of the [NeqSim project](https://equinor.github.io/neqsimhome/). NeqSim (Non-Equilibrium Simulator) is a Java library for estimation of fluid behavior and process design for oil and gas production.
+NeqSim is the main part of the [NeqSim project](https://equinor.github.io/neqsimhome/). NeqSim (Non-Equilibrium Simulator) is a Java library for estimating fluid behavior and process design for oil and gas production.
The basis for NeqSim is a library of fundamental mathematical models related to phase behavior and physical properties of oil and gas. NeqSim is easilly extended with new models. NeqSim development was initiated at the [Norwegian University of Science and Technology (NTNU)](https://www.ntnu.edu/employees/even.solbraa).
## Releases
-[NeqSim releases](https://github.com/equinor/neqsim/releases) are available as java packages (jar files) and as source code. NeqSim can be used in a third party application by adding NeqSim.jar to the classpath.
+[NeqSim releases](https://github.com/equinor/neqsim/releases) are available as a packaged jar file and as source code. NeqSim can be used in a third party application by adding NeqSim jar to the classpath.
## Getting started as a NeqSim Java user
-NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of dowloading the library and running a TPflash bencmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html).
+NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of downloading the library and running a TPflash benchmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html).
## Use of the NeqSim package
NeqSim can be set up as a dependency in a Java project via the [NeqSim GitHub package distribution](https://github.com/equinor/neqsim/packages/42822).
@@ -41,7 +41,7 @@ An interactive demonstration of how to get started as a NeqSim developer is pres
## Running the tests
-The test files are written in JUnit5 and placed in the [test directory](https://github.com/equinor/neqsim/tree/master/src/test). All test have to be passed before merging to the master. Test code shuld be written for all new code added to the project.
+The test files are written in JUnit5 and placed in the [test directory](https://github.com/equinor/neqsim/tree/master/src/test). Test code shuld be written for all new code added to the project, and all tests have to pass before merging into the master branch.
Test coverage can be examined using [jacoco](https://www.eclemma.org/jacoco/) from maven.
Generate a coverage report using `./mvnw jacoco:prepare-agent test install jacoco:report` and see results in target/site/jacoco/index.html.
From 28220b4e85f9e1c901f10c4db18941c8d21706ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?=
<34712686+asmfstatoil@users.noreply.github.com>
Date: Thu, 24 Nov 2022 13:04:13 +0100
Subject: [PATCH 079/171] chore: joined build tests workflows in verify_build
(#583)
* chore: clean up workflows
---
.github/workflows/build.yml | 26 --------
.github/workflows/build8.yml | 26 --------
.github/workflows/pr_test.yml | 21 -------
...ase.yml => release_to_github_packages.yml} | 5 +-
.github/workflows/release_with_jars.yml | 8 +--
.../{workflow.yml => test_coverage.yml} | 10 ++--
.github/workflows/verify_build.yml | 60 +++++++++++++++++++
.gitignore | 1 +
8 files changed, 72 insertions(+), 85 deletions(-)
delete mode 100644 .github/workflows/build.yml
delete mode 100644 .github/workflows/build8.yml
delete mode 100644 .github/workflows/pr_test.yml
rename .github/workflows/{release.yml => release_to_github_packages.yml} (87%)
rename .github/workflows/{workflow.yml => test_coverage.yml} (85%)
create mode 100644 .github/workflows/verify_build.yml
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 39c57ae1df..0000000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: Build maven
-
-on:
- push:
- branches: [ master ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 11
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '11'
- cache: 'maven'
- - name: Build with Maven
- run: mvn -B package --file pom.xml
- # - run: mkdir staging && cp target/*.jar staging
- # - uses: actions/upload-artifact@v2
- # with:
- # name: jarfiles
- # path: staging
diff --git a/.github/workflows/build8.yml b/.github/workflows/build8.yml
deleted file mode 100644
index c4a587dfd8..0000000000
--- a/.github/workflows/build8.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: Build maven java 8
-
-on:
- push:
- branches: [ master ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 8
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '8'
- cache: 'maven'
- - name: Build with Maven
- run: mvn -B package --file pomJava8.xml
- # - run: mkdir staging && cp target/*.jar staging
- # - uses: actions/upload-artifact@v2
- # with:
- # name: jarfiles
- # path: staging
diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml
deleted file mode 100644
index c07c181162..0000000000
--- a/.github/workflows/pr_test.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Pull request to master, test
-
-on:
- pull_request:
- branches: [ master ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 11
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '11'
- cache: 'maven'
- - name: Test with Maven
- run: mvn -B test --file pom.xml
diff --git a/.github/workflows/release.yml b/.github/workflows/release_to_github_packages.yml
similarity index 87%
rename from .github/workflows/release.yml
rename to .github/workflows/release_to_github_packages.yml
index 0d17d76d0b..3afd88e611 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release_to_github_packages.yml
@@ -1,4 +1,4 @@
-name: Release to Github Packages using maven deploy
+name: Release to Github Packages
on:
push:
@@ -7,7 +7,6 @@ on:
jobs:
build:
-
runs-on: ubuntu-latest
steps:
@@ -18,7 +17,7 @@ jobs:
java-version: 11
distribution: 'temurin'
cache: 'maven'
- - name: Get the version from tag
+ - name: Get the version number from the pushed tag
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}
- name: Deploy to Github Package Registry
diff --git a/.github/workflows/release_with_jars.yml b/.github/workflows/release_with_jars.yml
index a505d86990..6c1b05ecf5 100644
--- a/.github/workflows/release_with_jars.yml
+++ b/.github/workflows/release_with_jars.yml
@@ -1,4 +1,4 @@
-name: Create draft release with jar artifacts
+name: Create release (draft)
# Workflow is triggered when any pom-file is updated in master-branch
# If both pom-files have the same version number it
# - builds NeqSim-jars both in Java 8 and Java 11
@@ -9,9 +9,9 @@ on:
workflow_dispatch:
push:
branches:
- - master
- - main
- - release/*
+ - master
+ - main
+ - release/*
paths:
- 'pom*.xml'
diff --git a/.github/workflows/workflow.yml b/.github/workflows/test_coverage.yml
similarity index 85%
rename from .github/workflows/workflow.yml
rename to .github/workflows/test_coverage.yml
index 8817af0de1..b0fe07922d 100644
--- a/.github/workflows/workflow.yml
+++ b/.github/workflows/test_coverage.yml
@@ -1,9 +1,9 @@
-name: Jacoco Distributed Exec and Aggregation2
-
+name: Test coverage report
on:
- push:
- tags:
- - v*
+ workflow_dispatch:
+ # push:
+ # tags:
+ # - v*
jobs:
unit-tests:
diff --git a/.github/workflows/verify_build.yml b/.github/workflows/verify_build.yml
new file mode 100644
index 0000000000..1822a5240f
--- /dev/null
+++ b/.github/workflows/verify_build.yml
@@ -0,0 +1,60 @@
+name: Assert package builds, tests run and javadoc builds
+
+on:
+ workflow_dispatch:
+ push:
+ branches: # Only run for changes in master branch and any releases branch
+ - master
+ - 'releases/**'
+ paths: # Only run if some java-file is updated
+ - '*.java'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ test_javadoc:
+ name: Verify that javadoc can be built
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 11
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '11'
+ cache: 'maven'
+ - name: Test with Maven
+ run: mvn javadoc:javadoc
+
+ test_java_8:
+ name: Verify package builds with java 8
+ runs-on: ubuntu-latest
+ needs: test_javadoc
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 8
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '8'
+ cache: 'maven'
+ - name: Test with Maven
+ run: mvn -B test --file pomJava8.xml
+
+ test_java:
+ name: Verify package builds
+ runs-on: ubuntu-latest
+ needs: test_java_8 # Skip if java-8 tests fails
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 11
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '11'
+ cache: 'maven'
+ - name: Test with Maven
+ run: mvn -B test --file pom.xml
diff --git a/.gitignore b/.gitignore
index fcf9777f89..e875594dcd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,6 +69,7 @@ nbdist/
# End of https://www.gitignore.io/api/java,maven,netbeans
/bin/
src/main/java/neqsim/util/database/NeqSimDataBase2.java
+exportJacoco/
neqsim.iml
.classpath
From 16308ed750f131cca8543f41114d9397976fd48d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?=
<34712686+asmfstatoil@users.noreply.github.com>
Date: Thu, 24 Nov 2022 13:07:04 +0100
Subject: [PATCH 080/171] Update verify_build.yml
---
.github/workflows/verify_build.yml | 25 ++++++-------------------
1 file changed, 6 insertions(+), 19 deletions(-)
diff --git a/.github/workflows/verify_build.yml b/.github/workflows/verify_build.yml
index 1822a5240f..17c3d8bbd4 100644
--- a/.github/workflows/verify_build.yml
+++ b/.github/workflows/verify_build.yml
@@ -14,7 +14,7 @@ on:
jobs:
test_javadoc:
- name: Verify that javadoc can be built
+ name: Assert tests and javadoc with java 11
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -24,11 +24,13 @@ jobs:
distribution: 'temurin'
java-version: '11'
cache: 'maven'
- - name: Test with Maven
+ - name: Generate javadoc
run: mvn javadoc:javadoc
+ - name: Run tests
+ run: mvn -B test --file pom.xml
test_java_8:
- name: Verify package builds with java 8
+ name: Assert tests and javadoc with java 8
runs-on: ubuntu-latest
needs: test_javadoc
@@ -40,21 +42,6 @@ jobs:
distribution: 'temurin'
java-version: '8'
cache: 'maven'
- - name: Test with Maven
+ - name: Run tests
run: mvn -B test --file pomJava8.xml
-
- test_java:
- name: Verify package builds
- runs-on: ubuntu-latest
- needs: test_java_8 # Skip if java-8 tests fails
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 11
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '11'
- cache: 'maven'
- - name: Test with Maven
- run: mvn -B test --file pom.xml
From d7603ac7b98f43131af4759483a5e5dc7f2e6fc3 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, 25 Nov 2022 15:09:15 +0100
Subject: [PATCH 081/171] chore: clean up workflows (#585)
---
.../simulation/BasePVTsimulation.java | 2 +
.../neqsim/api/ioc/CalculationResult.java | 11 +
.../ChemicalReactionFactory.java | 3 +
.../flowNode/FlowNodeInterface.java | 4 +-
...terphaseTransportCoefficientBaseClass.java | 3 +
.../InterphaseOnePhase.java | 3 +
.../InterphasePipeFlow.java | 3 +
.../InterphaseTwoPhase.java | 3 +
.../InterphaseAnnularFlow.java | 3 +
.../InterphaseDropletFlow.java | 3 +
.../InterphaseStratifiedFlow.java | 3 +
.../InterphaseTwoPhasePipeFlow.java | 3 +
.../InterphasePackedBed.java | 3 +
.../InterphaseReactorFlow.java | 3 +
.../InterphaseStirredCellFlow.java | 3 +
.../PhysicalProperties.java | 6 +-
.../SimulationBaseClass.java | 20 +-
.../SimulationInterface.java | 5 +
.../ControllerDeviceBaseClass.java | 3 +
.../costEstimation/CostEstimateBaseClass.java | 3 +-
.../valve/ValveCostEstimate.java | 2 +-
.../MeasurementDeviceBaseClass.java | 3 +
.../measurementDevice/MultiPhaseMeter.java | 3 +
.../TemperatureTransmitter.java | 3 +
.../measurementDevice/WellAllocator.java | 35 +++
.../measurementDevice/pHProbe.java | 4 +
.../simpleFlowRegime/FluidSevereSlug.java | 41 ++++
.../simpleFlowRegime/Pipe.java | 62 ++++++
.../simpleFlowRegime/SevereSlugAnalyser.java | 143 +++++++++++++
.../ProcessEquipmentBaseClass.java | 2 +-
.../ProcessEquipmentInterface.java | 6 +-
.../processEquipment/TwoPortEquipment.java | 3 +
.../processEquipment/TwoPortInterface.java | 3 +
.../absorber/SimpleAbsorber.java | 6 +-
.../absorber/SimpleTEGAbsorber.java | 5 +
.../adsorber/SimpleAdsorber.java | 11 +-
.../compressor/Compressor.java | 76 +++----
.../compressor/CompressorPropertyProfile.java | 32 ++-
.../distillation/Condenser.java | 6 +-
.../distillation/Reboiler.java | 2 +-
.../distillation/VLSolidTray.java | 2 +-
.../processEquipment/expander/Expander.java | 2 +-
.../filter/CharCoalFilter.java | 2 +-
.../heatExchanger/Cooler.java | 2 +-
.../heatExchanger/HeatExchanger.java | 4 +
.../heatExchanger/Heater.java | 2 +-
.../heatExchanger/NeqHeater.java | 4 +-
.../mixer/MixerInterface.java | 9 +-
.../pipeline/AdiabaticPipe.java | 4 +-
.../pipeline/AdiabaticTwoPhasePipe.java | 9 +-
.../pipeline/PipeBeggsAndBrills.java | 60 +++++-
.../processEquipment/pipeline/Pipeline.java | 5 +
.../pipeline/SimpleTPoutPipeline.java | 4 +-
.../pipeline/TwoPhasePipeLine.java | 2 +-
.../powerGeneration/GasTurbine.java | 15 +-
.../processEquipment/reservoir/Well.java | 2 +-
.../separator/GasScrubber.java | 9 +-
.../separator/GasScrubberSimple.java | 9 +-
.../separator/Hydrocyclone.java | 2 +-
.../separator/NeqGasScrubber.java | 10 +-
.../processEquipment/separator/Separator.java | 5 +
.../separator/ThreePhaseSeparator.java | 2 +-
.../separator/sectionType/ManwaySection.java | 5 +
.../separator/sectionType/MeshSection.java | 5 +
.../separator/sectionType/NozzleSection.java | 5 +
.../separator/sectionType/ValveSection.java | 5 +
.../separator/sectionType/VaneSection.java | 5 +
.../splitter/ComponentSplitter.java | 19 +-
.../processEquipment/splitter/Splitter.java | 6 +-
.../stream/StreamInterface.java | 5 +-
.../stream/VirtualStream.java | 46 ++++
.../subsea/SimpleFlowLine.java | 2 +-
.../processEquipment/util/GORfitter.java | 26 ++-
.../util/MoleFractionControllerUtil.java | 5 +-
.../processEquipment/util/NeqSimUnit.java | 4 +-
.../processEquipment/util/Recycle.java | 29 ++-
.../util/StreamSaturatorUtil.java | 10 +-
.../processEquipment/valve/SafetyValve.java | 2 +-
.../processSystem/ProcessModuleBaseClass.java | 12 +-
.../processSystem/ProcessSystem.java | 10 +-
.../AdsorptionDehydrationlModule.java | 5 +
.../processModules/CO2RemovalModule.java | 5 +
.../processModules/DPCUModule.java | 5 +
.../GlycolDehydrationlModule.java | 5 +
.../processModules/MEGReclaimerModule.java | 5 +
.../MixerGasProcessingModule.java | 5 +
.../processModules/PropaneCoolingModule.java | 5 +
.../processModules/SeparationTrainModule.java | 5 +
.../SeparationTrainModuleSimple.java | 5 +
.../processModules/WellFluidModule.java | 5 +
.../processSimulation/util/monitor/Fluid.java | 6 +-
.../gasQuality/Standard_ISO6976.java | 3 +
.../gasQuality/Standard_ISO6976_2016.java | 5 +
.../standards/salesContract/BaseContract.java | 3 +
.../salesContract/ContractSpecification.java | 3 +
.../readDataFromFile/DataReader.java | 2 +-
src/main/java/neqsim/thermo/Fluid.java | 8 +
src/main/java/neqsim/thermo/FluidCreator.java | 4 +
.../neqsim/thermo/ThermodynamicModelTest.java | 1 -
.../thermo/characterization/Characterise.java | 3 +
.../characterization/PlusCharacterize.java | 4 +-
.../characterization/TBPCharacterize.java | 3 +
.../thermo/component/ComponentInterface.java | 11 +
.../thermo/component/ComponentPRvolcor.java | 77 ++++++-
.../AtractiveTermMatCopPRUMRNew.java | 14 +-
.../AttractiveTermTwuCoon.java | 1 +
.../neqsim/thermo/phase/PhaseInterface.java | 2 -
.../neqsim/thermo/phase/PhasePrEosvolcor.java | 201 +++++++++++++++++-
.../neqsim/thermo/system/SystemBWRSEos.java | 1 +
.../neqsim/thermo/system/SystemCSPsrkEos.java | 1 +
.../thermo/system/SystemDesmukhMather.java | 4 +
.../neqsim/thermo/system/SystemDuanSun.java | 1 +
.../thermo/system/SystemElectrolyteCPA.java | 1 +
.../system/SystemElectrolyteCPAstatoil.java | 1 +
.../system/SystemFurstElectrolyteEos.java | 2 +-
.../thermo/system/SystemGERG2004Eos.java | 1 +
.../thermo/system/SystemGERGwaterEos.java | 1 +
.../neqsim/thermo/system/SystemGEWilson.java | 4 +
.../neqsim/thermo/system/SystemInterface.java | 11 +-
.../thermo/system/SystemKentEisenberg.java | 6 +-
.../java/neqsim/thermo/system/SystemNRTL.java | 6 +-
.../neqsim/thermo/system/SystemPCSAFT.java | 1 +
.../neqsim/thermo/system/SystemPCSAFTa.java | 1 +
.../neqsim/thermo/system/SystemPrCPA.java | 4 +
.../neqsim/thermo/system/SystemPrDanesh.java | 1 +
.../neqsim/thermo/system/SystemPrEos.java | 1 +
.../neqsim/thermo/system/SystemPrEos1978.java | 4 +
.../thermo/system/SystemPrEosDelft1998.java | 4 +
.../thermo/system/SystemPrGassemEos.java | 1 +
.../thermo/system/SystemPrMathiasCopeman.java | 1 +
.../thermo/system/SystemProperties.java | 10 +-
.../neqsim/thermo/system/SystemPsrkEos.java | 4 +
.../neqsim/thermo/system/SystemRKEos.java | 4 +
.../neqsim/thermo/system/SystemSrkCPA.java | 5 +-
.../neqsim/thermo/system/SystemSrkCPAs.java | 4 +
.../thermo/system/SystemSrkCPAstatoil.java | 1 +
.../neqsim/thermo/system/SystemSrkEos.java | 1 +
.../system/SystemSrkMathiasCopeman.java | 4 +
.../thermo/system/SystemSrkPenelouxEos.java | 1 +
.../system/SystemSrkSchwartzentruberEos.java | 4 +
.../thermo/system/SystemSrkTwuCoonEos.java | 4 +
.../system/SystemSrkTwuCoonParamEos.java | 4 +
.../system/SystemSrkTwuCoonStatoilEos.java | 3 +
.../neqsim/thermo/system/SystemTSTEos.java | 1 +
.../neqsim/thermo/system/SystemThermo.java | 43 ++--
.../neqsim/thermo/system/SystemUMRCPAEoS.java | 9 +
.../neqsim/thermo/system/SystemUMRPRUEos.java | 4 +
.../thermo/system/SystemUMRPRUMCEos.java | 4 +
.../thermo/system/SystemUMRPRUMCEosNew.java | 9 +
.../neqsim/thermo/system/SystemUNIFAC.java | 4 +
.../thermo/system/SystemUNIFACpsrk.java | 4 +
.../java/neqsim/thermo/util/GERG/DETAIL.java | 16 +-
.../util/readwrite/EclipseFluidReadWrite.java | 21 ++
.../ThermodynamicOperations.java | 2 +-
.../ChemicalEquilibrium.java | 3 +
src/main/java/neqsim/util/NamedBaseClass.java | 14 +-
src/main/java/neqsim/util/NamedInterface.java | 6 +
.../database/NeqSimExperimentDatabase.java | 2 +
.../NeqSimTechnicalDesignDatabase.java | 2 +
.../exception/NotInitializedException.java | 4 +-
.../util/exception/ThermoException.java | 2 +-
.../exception/TooManyIterationsException.java | 4 +-
.../serialization/SerializationManager.java | 3 +
163 files changed, 1368 insertions(+), 201 deletions(-)
diff --git a/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java b/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java
index 9807f6b2d6..ca82082bcd 100644
--- a/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java
+++ b/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java
@@ -169,6 +169,8 @@ public double getZsaturation() {
}
/**
+ * saturationTemperature
.exportGasStream
.exportOilStream
.alkanility
.alkanility
.liqDensity
.liqDensity
.liqVisc
.liqVisc
.molecularWeight
.molecularWeight
.gasConstant
.name
.name
.internalDiameter
.internalDiameter
.leftLength
.leftLength
.rightLength
.rightLength
.angle
.angle
.flowPattern
.slugValue
.outletPressure
.outletPressure
.temperature
.temperature
.numberOfTimeSteps
.numberOfTimeSteps
.simulationTime
.simulationTime
.propertyProfile
.propertyProfile
.fluid
.fluid
.flowArrangement
.flowArrangement
.elevation
.angle
.numberOfIncrements
.pressureDrop
.inletStream
.
* inletStream
.
* inletStream
.
* inletStream
.
* inletStream
.splitStream
.
calcSplitFactors.
+ */ public void calcSplitFactors() { double sum = 0.0; for (int i = 0; i < flowRates.length; i++) { diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java index 87a2391861..3a07f0bbba 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java @@ -42,12 +42,11 @@ public interface StreamInterface extends ProcessEquipmentInterface { public void setFlowRate(double flowrate, String unit); /** + * {@inheritDoc} + * ** getPressure. *
- * - * @param unit a {@link java.lang.String} object - * @return a double */ public double getPressure(String unit); diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java index 48f8853a3f..f36bf60c10 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java @@ -30,32 +30,66 @@ public class VirtualStream extends ProcessEquipmentBaseClass { protected String compositionUnit; protected boolean setComposition = false; + /** + *Constructor for VirtualStream.
+ * + * @param name a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public VirtualStream(String name, StreamInterface stream) { super(name); refStream = stream; } + /** + *Constructor for VirtualStream.
+ * + * @param name a {@link java.lang.String} object + */ public VirtualStream(String name) { super(name); } + /** + *setReferenceStream.
+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public void setReferenceStream(StreamInterface stream) { refStream = stream; } + /** + *Setter for the field flowRate
.
Setter for the field composition
.
Setter for the field temperature
.
Setter for the field pressure
.
Getter for the field outStream
.
Constructor for GORfitter.
+ */ public GORfitter() { super("GOR fitter"); } @@ -62,17 +65,21 @@ public GORfitter(String name, StreamInterface stream) { super(name, stream); } + /** + *getGFV.
+ * + * @return a double + */ public double getGFV() { return GVF; } /** + * {@inheritDoc} + * *
* Setter for the field inletStream
.
*
setGVF.
+ * + * @param gvf a double + */ public void setGVF(double gvf) { fitAsGVF = true; this.GOR = gvf; } /** + *Getter for the field referenceConditions
.
Setter for the field referenceConditions
.
isFitAsGVF.
+ * * @return the fitAsGVF */ public boolean isFitAsGVF() { @@ -331,6 +349,8 @@ public boolean isFitAsGVF() { } /** + *Setter for the field fitAsGVF
.
* Setter for the field inletStream
.
*
* Setter for the field inletStream
.
*
Setter for the field compositionAccuracy
.
Setter for the field temperatureAccuracy
.
Setter for the field flowAccuracy
.
resetIterations.
+ */ public void resetIterations() { iterations = 0; } @@ -226,7 +244,11 @@ public double calcMixStreamEnthalpy() { return enthalpy; } - /** {@inheritDoc} */ + /** + * {@inheritDoc} + * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ @Deprecated public StreamInterface getOutStream() { return mixedStream; @@ -455,6 +477,11 @@ public void setErrorFlow(double error) { this.errorFlow = error; } + /** + *Getter for the field errorFlow
.
* Setter for the field inletStream
.
*
setApprachToSaturation.
+ * + * @param approachToSaturation a double + */ public void setApprachToSaturation(double approachToSaturation) { this.approachToSaturation = approachToSaturation; } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java index 0e01aabead..66578d4f9b 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java @@ -41,7 +41,7 @@ public SafetyValve(StreamInterface inletStream) { /** * Constructor for SafetyValve. - * + * * @param name name of valve */ public SafetyValve(String name) { diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java index ac34d2a004..38c70d0faa 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java @@ -33,6 +33,11 @@ public abstract class ProcessModuleBaseClass extends SimulationBaseClass private neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); + /** + *Constructor for ProcessModuleBaseClass.
+ * + * @param name a {@link java.lang.String} object + */ public ProcessModuleBaseClass(String name) { super(name); } @@ -225,13 +230,12 @@ public String[][] getResultTable() { } /** + * {@inheritDoc} + * ** getPressure. *
- * - * @param unit a {@link java.lang.String} object - * - **/ + */ public double getPressure(String unit) { return 1.0; } diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java index 15ad8433aa..602e248492 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java @@ -467,12 +467,11 @@ public void runTransient() { } /** + * {@inheritDoc} + * ** runTransient. *
- * - * @param dt Delta time [s] - * @param id Calculation identifier */ @Override public void runTransient(double dt, UUID id) { @@ -495,6 +494,7 @@ public void runTransient(double dt, UUID id) { setCalculationIdentifier(id); } + /** {@inheritDoc} */ @Override public boolean solved() { return true; @@ -702,11 +702,11 @@ public String getName() { } /** + * {@inheritDoc} + * *
* Setter for the field name
.
*
Constructor for AdsorptionDehydrationlModule.
+ * + * @param name a {@link java.lang.String} object + */ public AdsorptionDehydrationlModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java index 4b1932c7b6..b97b73907b 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java @@ -25,6 +25,11 @@ public class CO2RemovalModule extends ProcessModuleBaseClass { protected Separator inletSeparator = null; + /** + *Constructor for CO2RemovalModule.
+ * + * @param name a {@link java.lang.String} object + */ public CO2RemovalModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java index bf62818697..667c230361 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java @@ -46,6 +46,11 @@ public class DPCUModule extends ProcessModuleBaseClass { Mixer mixer; DistillationColumn distColumn; + /** + *Constructor for DPCUModule.
+ * + * @param name a {@link java.lang.String} object + */ public DPCUModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java index 6177d61a3e..0928cdb83c 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java @@ -60,6 +60,11 @@ public class GlycolDehydrationlModule extends ProcessModuleBaseClass { double reboilerTemperature = 273.15 + 204.0; double regenerationPressure = 1.4; + /** + *Constructor for GlycolDehydrationlModule.
+ * + * @param name a {@link java.lang.String} object + */ public GlycolDehydrationlModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java index bd78d2d73f..af61b738b9 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java @@ -38,6 +38,11 @@ public class MEGReclaimerModule extends ProcessModuleBaseClass { double reclaimerPressure = 0.17; + /** + *Constructor for MEGReclaimerModule.
+ * + * @param name a {@link java.lang.String} object + */ public MEGReclaimerModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java index 02c49d781c..c0ad2f3ac0 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java @@ -44,6 +44,11 @@ public class MixerGasProcessingModule extends ProcessModuleBaseClass { Pump oilPump; Cooler secondStageAfterCooler; + /** + *Constructor for MixerGasProcessingModule.
+ * + * @param name a {@link java.lang.String} object + */ public MixerGasProcessingModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java index 7f2065a424..a9045aeef9 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java @@ -20,6 +20,11 @@ */ public class PropaneCoolingModule extends ProcessModuleBaseClass { + /** + *Constructor for PropaneCoolingModule.
+ * + * @param name a {@link java.lang.String} object + */ public PropaneCoolingModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java index aac41420ab..22734e1413 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java @@ -41,6 +41,11 @@ public class SeparationTrainModule extends ProcessModuleBaseClass { double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; double exportOilTemperature = 273.15 + 30; + /** + *Constructor for SeparationTrainModule.
+ * + * @param name a {@link java.lang.String} object + */ public SeparationTrainModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java index ce15961a48..8c8e082694 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java @@ -39,6 +39,11 @@ public class SeparationTrainModuleSimple extends ProcessModuleBaseClass { double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; double exportOilTemperature = 273.15 + 30; + /** + *Constructor for SeparationTrainModuleSimple.
+ * + * @param name a {@link java.lang.String} object + */ public SeparationTrainModuleSimple(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java index fd82e3fcd2..a0bf071118 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java @@ -38,6 +38,11 @@ public class WellFluidModule extends ProcessModuleBaseClass { double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; double exportOilTemperature = 273.15 + 30; + /** + *Constructor for WellFluidModule.
+ * + * @param name a {@link java.lang.String} object + */ public WellFluidModule(String name) { super(name); } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java b/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java index d79931d75e..c12dbe9ca3 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java @@ -39,7 +39,7 @@ public Fluid() { ** Constructor for Fluid. Sets name of inputFluid as name. *
- * + * * @param inputFluid a {@link neqsim.thermo.system.SystemInterface} object */ public Fluid(SystemInterface inputFluid) { @@ -48,7 +48,7 @@ public Fluid(SystemInterface inputFluid) { /** * Constructor for Fluid. - * + * * @param name name of fluid */ public Fluid(String name) { @@ -59,7 +59,7 @@ public Fluid(String name) { /** * Constructor for Fluid. - * + * * @param name name of fluid * @param inputFluid input fluid */ diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java index ae53409920..eb3160b6f0 100644 --- a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java @@ -375,6 +375,9 @@ public double getValue(String returnParameter, java.lang.String returnUnit) { } } + /** + *checkReferenceCondition.
+ */ public void checkReferenceCondition() { Double[] validvalues = {0.0, 15.0, 15.55, 20.0}; diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java index 0f11e9ed40..8afad09817 100644 --- a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java @@ -32,6 +32,11 @@ public class Standard_ISO6976_2016 extends Standard_ISO6976 { HinfIdeal60F = 0.0; static Logger logger = LogManager.getLogger(Standard_ISO6976_2016.class); + /** + *Constructor for Standard_ISO6976_2016.
+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ public Standard_ISO6976_2016(SystemInterface thermoSystem) { super("Standard_ISO6976_2016", "Calculation of calorific values, density, relative density and Wobbe index from composition based on ISO6976 version 2016", diff --git a/src/main/java/neqsim/standards/salesContract/BaseContract.java b/src/main/java/neqsim/standards/salesContract/BaseContract.java index 0479db807d..0768443ce5 100644 --- a/src/main/java/neqsim/standards/salesContract/BaseContract.java +++ b/src/main/java/neqsim/standards/salesContract/BaseContract.java @@ -40,6 +40,9 @@ public class BaseContract implements ContractInterface { ContractSpecification[] spesifications = new ContractSpecification[50]; private int specificationsNumber = 0; + /** + *Constructor for BaseContract.
+ */ public BaseContract() {} /** diff --git a/src/main/java/neqsim/standards/salesContract/ContractSpecification.java b/src/main/java/neqsim/standards/salesContract/ContractSpecification.java index d75fbb2ea4..ac68b9d5f0 100644 --- a/src/main/java/neqsim/standards/salesContract/ContractSpecification.java +++ b/src/main/java/neqsim/standards/salesContract/ContractSpecification.java @@ -30,6 +30,9 @@ public class ContractSpecification extends NamedBaseClass { private String unit = "", comments = ""; @Deprecated + /** + *Constructor for ContractSpecification.
+ */ public ContractSpecification() { super("ContractSpecification"); } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java index baf9d855af..48157482fe 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java @@ -75,7 +75,7 @@ public void readData() { * Getter for the fieldsampleObjectList
.
*
*
- * @return a {@link java.util.ArrayList} of {@link DataObject}
+ * @return a {@link java.util.ArrayList} of {@link neqsim.statistics.experimentalSampleCreation.readDataFromFile.DataObject}
*/
public ArrayListConstructor for Fluid.
+ */ public Fluid() { } + /** + *Getter for the field fluid
.
hasWater=false
*/
public static boolean hasWater = false;
+ /** Constant autoSelectModel=false
*/
public static boolean autoSelectModel = false;
+ /** Constant thermoModel="srk"
*/
public static String thermoModel = "srk";
+ /** Constant thermoMixingRule="classic"
*/
public static String thermoMixingRule = "classic";
/**
diff --git a/src/main/java/neqsim/thermo/ThermodynamicModelTest.java b/src/main/java/neqsim/thermo/ThermodynamicModelTest.java
index 24a9afc8dd..ecb0abd130 100644
--- a/src/main/java/neqsim/thermo/ThermodynamicModelTest.java
+++ b/src/main/java/neqsim/thermo/ThermodynamicModelTest.java
@@ -114,7 +114,6 @@ public boolean checkFugacityCoefficients() {
* @return a boolean
*/
// public boolean checkFugacityCoefficientsDn() {
-
public boolean checkFugacityCoefficientsDn() {
double temp1 = 0;
double sum = 0;
diff --git a/src/main/java/neqsim/thermo/characterization/Characterise.java b/src/main/java/neqsim/thermo/characterization/Characterise.java
index 022a114887..d6029c9e7b 100644
--- a/src/main/java/neqsim/thermo/characterization/Characterise.java
+++ b/src/main/java/neqsim/thermo/characterization/Characterise.java
@@ -25,6 +25,9 @@ public class Characterise implements java.io.Serializable, Cloneable {
protected TBPfractionModel TBPfractionModelSelector;
static Logger logger = LogManager.getLogger(Characterise.class);
+ /**
+ * Constructor for Characterise.
+ */ public Characterise() {} /** diff --git a/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java b/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java index 40deb3feb5..0bb0c3c7c7 100644 --- a/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java +++ b/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java @@ -35,6 +35,9 @@ public class PlusCharacterize implements java.io.Serializable, CharacteriseInter double[] plusCoefs = {0.0007774204804, -0.02390179}; SystemInterface system = null; + /** + *Constructor for PlusCharacterize.
+ */ public PlusCharacterize() {} /** @@ -336,7 +339,6 @@ public int getStartPlus() { * * @param startPlus New value of property firstPlusFractionNumber. * @deprecated use {@link #setFirstPlusFractionNumber(int firstPlusFractionNumber)} instead. - * */ @Deprecated public void setStartPlus(int startPlus) { diff --git a/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java b/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java index 4c195acf04..115a6c5d4d 100644 --- a/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java +++ b/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java @@ -27,6 +27,9 @@ public class TBPCharacterize extends PlusCharacterize { double[] TBP_Mnom = null; double[] TBP_M = null; + /** + *Constructor for TBPCharacterize.
+ */ public TBPCharacterize() {} /** diff --git a/src/main/java/neqsim/thermo/component/ComponentInterface.java b/src/main/java/neqsim/thermo/component/ComponentInterface.java index c9986abce1..4237c1886d 100644 --- a/src/main/java/neqsim/thermo/component/ComponentInterface.java +++ b/src/main/java/neqsim/thermo/component/ComponentInterface.java @@ -2179,6 +2179,12 @@ public double fugcoefDiffTempNumeric(PhaseInterface phase, int numberOfComponent */ public void setCpE(double CpE); + /** + *getComponentNameFromAlias.
+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.String} object + */ static public String getComponentNameFromAlias(String name) { LinkedHashMapgetComponentMap.
+ * + * @return a {@link java.util.LinkedHashMap} object + */ static public LinkedHashMapComponentPRvolcor class.
* * @author Even Solbraa - * + * @version $Id: $Id */ public class ComponentPRvolcor extends ComponentPR { @@ -21,27 +22,60 @@ public class ComponentPRvolcor extends ComponentPR { // private double calcc; public double[] Cij = new double[MAX_NUMBER_OF_COMPONENTS]; public double Ci = 0; + /** + *Constructor for ComponentPRvolcor.
+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ public ComponentPRvolcor(int number, double TC, double PC, double M, double a, double moles) { super(number, TC, PC, M, a, moles); } /// ** {@inheritDoc} */ // @Override + /** + *calcc.
+ * + * @return a double + */ public double calcc() { return (0.1154 - 0.4406 * (0.29056 - 0.08775 * getAcentricFactor())) * R * criticalTemperature / criticalPressure; } // derivative of translation with regards to temperature + /** + *calccT.
+ * + * @return a double + */ public double calccT() { return 0.; } // second derivative of translation with regards to temperature*temperature + /** + *calccTT.
+ * + * @return a double + */ public double calccTT() { return 0.; } + /** + *Constructor for ComponentPRvolcor.
+ * + * @param component_name a {@link java.lang.String} object + * @param moles a double + * @param molesInPhase a double + * @param compnumber a int + */ public ComponentPRvolcor(String component_name, double moles, double molesInPhase, int compnumber) { super(component_name, moles, molesInPhase, compnumber); @@ -57,12 +91,21 @@ public void init(double temp, double pres, double totMoles, double beta, int typ c = calcc(); } - /** {@inheritDoc} */ + /** + * {@inheritDoc} + * + * @return a double + */ // @Override public double getc() { return c; } + /** + *getcT.
+ * + * @return a double + */ public double getcT() { return 0; } @@ -88,10 +131,21 @@ public void Finit(PhaseInterface phase, double temp, double pres, double totMole } } + /** + *getCi.
+ * + * @return a double + */ public double getCi() { return Ci; } + /** + *getCij.
+ * + * @param j a int + * @return a double + */ public double getCij(int j) { return Cij[j]; } @@ -100,10 +154,20 @@ public double getCij(int j) { // modified // second derivative of C with regards to mole fraction and temperature + /** + *getCiT.
+ * + * @return a double + */ public double getCiT() { return 0; } + /** + *getcTT.
+ * + * @return a double + */ public double getcTT() { return 0; } @@ -116,6 +180,15 @@ public double dFdN(PhaseInterface phase, int numberOfComponents, double temperat + ((PhasePrEosvolcor) phase).FC() * getCi(); } + /** + *getFC.
+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ public double getFC(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { return ((PhasePrEosvolcor) phase).FC(); diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java index 72f7fa6edd..eeacbcfee0 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java @@ -3,9 +3,10 @@ import neqsim.thermo.component.ComponentEosInterface; /** + *AtractiveTermMatCopPRUMRNew class.
* * @author esol - * + * @version $Id: $Id */ public class AtractiveTermMatCopPRUMRNew extends AttractiveTermMatCopPRUMR { @@ -13,6 +14,11 @@ public class AtractiveTermMatCopPRUMRNew extends AttractiveTermMatCopPRUMR { double orgpar = 0.0; boolean useStandardAlphaForSupercritical = false; + /** + *Constructor for AtractiveTermMatCopPRUMRNew.
+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component) { super(component); m = (0.384401 + 1.52276 * component.getAcentricFactor() @@ -21,6 +27,12 @@ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component) { - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); } + /** + *Constructor for AtractiveTermMatCopPRUMRNew.
+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of {@link double} objects + */ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component, double[] params) { this(component); parameters = new double[params.length]; diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java index c27935e03b..0d85c20c35 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java @@ -39,6 +39,7 @@ public AttractiveTermTwuCoon(ComponentEosInterface component) { // // d = 1-1.0/d; // } + /** {@inheritDoc} */ @Override public AttractiveTermTwuCoon clone() { AttractiveTermTwuCoon attractiveTerm = null; diff --git a/src/main/java/neqsim/thermo/phase/PhaseInterface.java b/src/main/java/neqsim/thermo/phase/PhaseInterface.java index 5fefdddb55..b90e4311e1 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseInterface.java +++ b/src/main/java/neqsim/thermo/phase/PhaseInterface.java @@ -987,11 +987,9 @@ public void removeComponent(String componentName, double moles, double molesInPh /** * method to return conductivity in a specified unit. - * * * @param unit Supported units are W/mK, W/cmK * @return conductivity in specified unit - * * @deprecated use {@link #getThermalConductivity(String unit)} instead. */ @Deprecated diff --git a/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java b/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java index 7f709417aa..5f2ab84cd9 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java +++ b/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java @@ -10,9 +10,10 @@ import neqsim.thermo.component.ComponentPRvolcor; /** + *PhasePrEosvolcor class.
* * @author Even Solbraa - * + * @version $Id: $Id */ public class PhasePrEosvolcor extends PhasePrEos { @@ -22,7 +23,9 @@ public class PhasePrEosvolcor extends PhasePrEos { public double C; public double Ctot = 0; - /** Creates new PhaseSrkEos. */ + /** + * Creates new PhaseSrkEos. + */ public PhasePrEosvolcor() { super(); thermoPropertyModelName = "PR-EoS-volcorr"; @@ -38,19 +41,31 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in } + /** + *getCT.
+ * + * @return a double + */ public double getCT() { return CT; } + /** + *getCTT.
+ * + * @return a double + */ public double getCTT() { return 0; } + /** {@inheritDoc} */ @Override public double calcg() { return Math.log(1.0 - (getb() - getc()) / molarVolume); } + /** {@inheritDoc} */ @Override public double calcf() { return (1.0 / (R * getB() * (delta1 - delta2)) @@ -58,6 +73,7 @@ public double calcf() { / (1.0 + (delta2 * getb() + getc()) / (molarVolume)))); } + /** {@inheritDoc} */ @Override public double dFdV() { // return super.dFdV(); @@ -68,22 +84,53 @@ public double dFdV() { // note that in future the next thre lines should be modified to handle various mixing rules for // the translation + /** + *getcij.
+ * + * @param compArray a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param compArray2 a {@link neqsim.thermo.component.ComponentEosInterface} object + * @return a double + */ public double getcij(ComponentEosInterface compArray, ComponentEosInterface compArray2) { return ((((ComponentPRvolcor) compArray).getc()) + (((ComponentPRvolcor) compArray2).getc())) * 0.5; } + /** + *getcijT.
+ * + * @param compArray a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param compArray2 a {@link neqsim.thermo.component.ComponentEosInterface} object + * @return a double + */ public double getcijT(ComponentEosInterface compArray, ComponentEosInterface compArray2) { return (((ComponentPRvolcor) compArray).getcT() + ((ComponentPRvolcor) compArray2).getcT()) * 0.5; } + /** + *getcijTT.
+ * + * @param compi a {@link neqsim.thermo.component.ComponentPRvolcor} object + * @param compj a {@link neqsim.thermo.component.ComponentPRvolcor} object + * @return a double + */ public double getcijTT(ComponentPRvolcor compi, ComponentPRvolcor compj) { // return (compi.getcTT() + compj.getcTT()) * 0.5; return 0; } // @Override + /** + *calcCi.
+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCi(int compNumb, PhaseInterface phase, double temperature, double pressure, int numbcomp) { double Ci = 0.0; @@ -98,6 +145,17 @@ public double calcCi(int compNumb, PhaseInterface phase, double temperature, dou return Ci; } + /** + *calcCij.
+ * + * @param compNumb a int + * @param compNumbj a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, double pressure, int numbcomp) { double cij = 0.0; @@ -108,6 +166,16 @@ public double calcCij(int compNumb, int compNumbj, PhaseInterface phase, double - ((ComponentPRvolcor) compArray[compNumbj]).getCi()) / phase.getNumberOfMolesInPhase(); } + /** + *calcCiT.
+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCiT(int compNumb, PhaseInterface phase, double temperature, double pressure, int numbcomp) { double CiT = 0.0; @@ -122,10 +190,28 @@ public double calcCiT(int compNumb, PhaseInterface phase, double temperature, do return CiT; } + /** + *calcCT.
+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { return 0.0; } + /** + *calcC.
+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcC(PhaseInterface phase, double temperature, double pressure, int numbcomp) { C = 0.0; ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); @@ -145,14 +231,25 @@ private double loc_C() { return calcC(this, temperature, pressure, numberOfComponents); } + /** + *getc.
+ * + * @return a double + */ public double getc() { return loc_C() / numberOfMolesInPhase; } + /** + *getC.
+ * + * @return a double + */ public double getC() { return loc_C(); } + /** {@inheritDoc} */ @Override public double gV() { return (getb() - getc()) @@ -164,6 +261,7 @@ public double gV() { // of the units of molarvolume?) } + /** {@inheritDoc} */ @Override public double gVV() { double val1 = numberOfMolesInPhase * getMolarVolume(); @@ -175,12 +273,18 @@ public double gVV() { // return -1.0 / (val2 * val2) + 1.0 / (val1 * val1); } + /** + *gVVV.
+ * + * @return a double + */ public double gVVV() { double val1 = numberOfMolesInPhase * getMolarVolume(); double val2 = val1 + getC() - getB(); return 2.0 / (val2 * val2 * val2) - 2.0 / (val1 * val1 * val1); } + /** {@inheritDoc} */ @Override public double fv() { return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()) @@ -190,6 +294,7 @@ public double fv() { // * (numberOfMolesInPhase * molarVolume + delta2 * loc_B)); } + /** {@inheritDoc} */ @Override public double fVV() { double val1 = (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()); @@ -201,6 +306,11 @@ public double fVV() { // return 1.0 / (R * loc_B * (delta1 - delta2)) * (-1.0 / (val1 * val1) + 1.0 / (val2 * val2)); } + /** + *fVVV.
+ * + * @return a double + */ public double fVVV() { double val1 = numberOfMolesInPhase * molarVolume + getB() * delta1 + getC(); double val2 = numberOfMolesInPhase * molarVolume + getB() * delta2 + getC(); @@ -218,6 +328,7 @@ public double fVVV() { // because loc_B is marked as private // in PhaseEoS...so for now I switch it to getb and we will see + /** {@inheritDoc} */ @Override public double gb() { // return -1.0 / (numberOfMolesInPhase * molarVolume - loc_B + loc_C); @@ -225,50 +336,79 @@ public double gb() { } //// derivative of small g with regards to c + /** + *gc.
+ * + * @return a double + */ public double gc() { // return 1.0 / (numberOfMolesInPhase * molarVolume - loc_B + loc_C); return 1.0 / (numberOfMolesInPhase * molarVolume - getB() + getC()); } //// derivative of small f with regards to c-->equal to fv + /** + *fc.
+ * + * @return a double + */ public double fc() { return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()) * (numberOfMolesInPhase * molarVolume + delta2 * getB() + loc_C())); } + /** {@inheritDoc} */ @Override public double fb() { return -(calcf() + (numberOfMolesInPhase * molarVolume + getC()) * fv()) / getB(); } //// second derivative of small f with regards to cc-->equal to fvv + /** + *fcc.
+ * + * @return a double + */ public double fcc() { return fVV(); } //// second derivative of small f with regards to bc-->equal to fvv + /** + *fbc.
+ * + * @return a double + */ public double fbc() { return fBV(); } //// second derivative of small f with regards to cv-->equal to fvv + /** + *fcv.
+ * + * @return a double + */ public double fcv() { return fVV(); } //// second derivative of small f with regards to bv--> + /** {@inheritDoc} */ @Override public double fBV() { return -(2.0 * fv() + (numberOfMolesInPhase * molarVolume + getC()) * fVV()) / getB(); } //// second derivative of small f with regards to bb--> + /** {@inheritDoc} */ @Override public double fBB() { return -(2.0 * fb() + (numberOfMolesInPhase * molarVolume + getC()) * fBV()) / getB(); } //// second derivative of small g with regards to bv--> + /** {@inheritDoc} */ @Override public double gBV() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); @@ -276,6 +416,7 @@ public double gBV() { } //// second derivative of small g with regards to bb--> + /** {@inheritDoc} */ @Override public double gBB() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); @@ -283,18 +424,33 @@ public double gBB() { } //// second derivative of small g with regards to bc--> + /** + *gBC.
+ * + * @return a double + */ public double gBC() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return 1.0 / (val * val); } //// second derivative of small g with regards to cv--> + /** + *gCV.
+ * + * @return a double + */ public double gCV() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return -1.0 / (val * val); } //// second derivative of small g with regards to cc--> + /** + *gCC.
+ * + * @return a double + */ public double gCC() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return -1.0 / (val * val); @@ -302,6 +458,7 @@ public double gCC() { // Below are the partial derivatives of F with regards to model parameters + /** {@inheritDoc} */ @Override public double F() { return super.F(); @@ -309,39 +466,76 @@ public double F() { // derivative of big F with regards to C // @Override + /** + *FC.
+ * + * @return a double + */ public double FC() { return -numberOfMolesInPhase * gc() - getA() / temperature * fc(); } + /** + *FnC.
+ * + * @return a double + */ public double FnC() { return -gc(); } + /** + *FTC.
+ * + * @return a double + */ public double FTC() { return getA() * fc() / temperature / temperature; } + /** + *FBC.
+ * + * @return a double + */ public double FBC() { return -numberOfMolesInPhase * gBC() - getA() * fbc() / temperature; } + /** + *FCV.
+ * + * @return a double + */ public double FCV() { return -numberOfMolesInPhase * gCV() - getA() * fcv() / temperature; } + /** + *FCC.
+ * + * @return a double + */ public double FCC() { return -numberOfMolesInPhase * gCC() - getA() * fcc() / temperature; } + /** + *FCD.
+ * + * @return a double + */ public double FCD() { return -fc() / temperature; } + /** {@inheritDoc} */ @Override public double dFdVdV() { return -numberOfMolesInPhase * gVV() - getA() * fVV() / temperature; } + /** {@inheritDoc} */ @Override public double dFdVdVdV() { return -numberOfMolesInPhase * gVVV() - getA() * fVVV() / temperature; @@ -359,12 +553,14 @@ public double dFdT() { return FT() + FD() * getAT() + FC() * getCT(); } + /** {@inheritDoc} */ @Override public double dFdTdT() { return FTT() + 2.0 * FDT() * getAT() + FD() * getATT() + 2 * FTC() * getCT() + FCC() * getCT() * getCT() + FC() * getCTT() + 2 * FCD() * getCT() * getAT(); } + /** {@inheritDoc} */ @Override public PhasePrEosvolcor clone() { PhasePrEosvolcor clonedPhase = null; @@ -377,6 +573,7 @@ public PhasePrEosvolcor clone() { return clonedPhase; } + /** {@inheritDoc} */ @Override public void addcomponent(String componentName, double moles, double molesInPhase, int compNumber) { diff --git a/src/main/java/neqsim/thermo/system/SystemBWRSEos.java b/src/main/java/neqsim/thermo/system/SystemBWRSEos.java index c2d4dcbf72..aa9daab1f0 100644 --- a/src/main/java/neqsim/thermo/system/SystemBWRSEos.java +++ b/src/main/java/neqsim/thermo/system/SystemBWRSEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the BWRS equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemBWRSEos extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java b/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java index f4a945bbc5..c7c639a06b 100644 --- a/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java +++ b/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the CSP SRK equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemCSPsrkEos extends SystemSrkEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java b/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java index c39c7b21f8..1b5c099c89 100644 --- a/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java +++ b/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the Desmukh Mather thermodynamic model. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemDesmukhMather extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemDesmukhMather.
+ */ public SystemDesmukhMather() { super(); modelName = "Desmukh-Mather-model"; diff --git a/src/main/java/neqsim/thermo/system/SystemDuanSun.java b/src/main/java/neqsim/thermo/system/SystemDuanSun.java index 3a6ffcae0f..5181a9c6a6 100644 --- a/src/main/java/neqsim/thermo/system/SystemDuanSun.java +++ b/src/main/java/neqsim/thermo/system/SystemDuanSun.java @@ -9,6 +9,7 @@ * This class defines a thermodynamic system using the Duan Sun method used for CO2. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemDuanSun extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java index a44068d530..9485fc0b1a 100644 --- a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java @@ -7,6 +7,7 @@ * This class defines a thermodynamic system using the Electrolyte CPA EoS of Equinor. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemElectrolyteCPA extends SystemFurstElectrolyteEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java index d53c0d6652..d75cfafe4e 100644 --- a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java +++ b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java @@ -7,6 +7,7 @@ * This class defines a thermodynamic system using the electrolyte CPA EoS Statoil model. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemElectrolyteCPAstatoil extends SystemFurstElectrolyteEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java index 78f2ab4e0c..e01bc9ecdc 100644 --- a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java +++ b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java @@ -3,7 +3,7 @@ import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; /** - * + * * This class defines a thermodynamic system using the electrolyte the Furst Electrolyte Eos. * * @author Even Solbraa diff --git a/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java b/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java index 4b4a3ec15c..bedd4e128c 100644 --- a/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java +++ b/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the GERG2004 equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGERG2004Eos extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java b/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java index b228b57f9d..0ddea795d7 100644 --- a/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java +++ b/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the GERG water equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGERGwaterEos extends SystemPrEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemGEWilson.java b/src/main/java/neqsim/thermo/system/SystemGEWilson.java index 862955c3eb..1ac186720a 100644 --- a/src/main/java/neqsim/thermo/system/SystemGEWilson.java +++ b/src/main/java/neqsim/thermo/system/SystemGEWilson.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the Wilson GE model. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGEWilson extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemGEWilson.
+ */ public SystemGEWilson() { super(); modelName = "UNIFAC-GE-model"; diff --git a/src/main/java/neqsim/thermo/system/SystemInterface.java b/src/main/java/neqsim/thermo/system/SystemInterface.java index 2efb2b3a98..19f07b59b0 100644 --- a/src/main/java/neqsim/thermo/system/SystemInterface.java +++ b/src/main/java/neqsim/thermo/system/SystemInterface.java @@ -669,8 +669,6 @@ public default boolean IsPhase(int i) { * @param flowRate a double * @param flowunit a {@link java.lang.String} object. flow units are: kg/sec, kg/min, kg/hr * m3/sec, m3/min, m3/hr, mole/sec, mole/min, mole/hr, Sm3/hr, Sm3/day, idSm3/hr, idSm3/day - * - * */ public void setTotalFlowRate(double flowRate, String flowunit); @@ -1485,7 +1483,6 @@ public default void init() { /** * method to calculate thermodynamic properties of the fluid. The temperature, pressure, number of * phases and composition of the phases will be used as basis for calculation. - * * * @param number - The number can be 0, 1, 2 or 3. 0: Set feed composition for all phases. 1: * Calculation of density, fugacities and Z-factor 2: 1 + calculation of enthalpy, entropy, @@ -2072,7 +2069,6 @@ public double calcBeta() * * @return kappa */ - public double getKappa(); /** @@ -2482,7 +2478,11 @@ public void setImplementedCompositionDeriativesofFugacity( @Override public int hashCode(); - /** {@inheritDoc} */ + /** + * {@inheritDoc} + * + * @param name a {@link java.lang.String} object + */ public void addToComponentNames(java.lang.String name); /** @@ -2533,6 +2533,7 @@ public void addCharacterized(String[] charNames, double[] charFlowrate, double[] * Get normal liquid density of fluid. * * @param unit {@link java.lang.String} Supported units are kg/m3 and gr/cm3 + * @return a double */ public double getIdealLiquidDensity(String unit); } diff --git a/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java b/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java index 6c1f85ffe7..c84c1ef7e0 100644 --- a/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java +++ b/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java @@ -6,12 +6,16 @@ /** * This class defines a thermodynamic system using the Kent Eisenberg model. - * + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemKentEisenberg extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemKentEisenberg.
+ */ public SystemKentEisenberg() { super(); modelName = "Kent Eisenberg-model"; diff --git a/src/main/java/neqsim/thermo/system/SystemNRTL.java b/src/main/java/neqsim/thermo/system/SystemNRTL.java index f420de8c31..8e6f7bc3da 100644 --- a/src/main/java/neqsim/thermo/system/SystemNRTL.java +++ b/src/main/java/neqsim/thermo/system/SystemNRTL.java @@ -6,12 +6,16 @@ /** * This class defines a thermodynamic system using the SRK EoS for gas and NRTL for liquids. - * + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemNRTL extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemNRTL.
+ */ public SystemNRTL() { super(); modelName = "NRTL-GE-model"; diff --git a/src/main/java/neqsim/thermo/system/SystemPCSAFT.java b/src/main/java/neqsim/thermo/system/SystemPCSAFT.java index 7611de53fc..5aa6554eb8 100644 --- a/src/main/java/neqsim/thermo/system/SystemPCSAFT.java +++ b/src/main/java/neqsim/thermo/system/SystemPCSAFT.java @@ -10,6 +10,7 @@ * This class defines a thermodynamic system using the PC-SAFT EoS equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPCSAFT extends SystemSrkEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java b/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java index 5d999fe2bd..d30f3183b2 100644 --- a/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java +++ b/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the PC-SAFT with association equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPCSAFTa extends SystemSrkEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemPrCPA.java b/src/main/java/neqsim/thermo/system/SystemPrCPA.java index ee8b9051a7..f46baed7ed 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemPrCPA.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the PR-CPA equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrCPA extends SystemPrEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemPrCPA.
+ */ public SystemPrCPA() { super(); modelName = "CPA-PR-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemPrDanesh.java b/src/main/java/neqsim/thermo/system/SystemPrDanesh.java index 42f008b09e..5c99f943c8 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrDanesh.java +++ b/src/main/java/neqsim/thermo/system/SystemPrDanesh.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the PR Danesh equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrDanesh extends SystemPrEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemPrEos.java b/src/main/java/neqsim/thermo/system/SystemPrEos.java index 0a0f3f6fb1..5cd49bb077 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEos.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the Peng Robinson equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrEos extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java index c86497fd7c..1734302ea1 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the Peng Robinson v. 1978 equation of state * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrEos1978 extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemPrEos1978.
+ */ public SystemPrEos1978() { super(); modelName = "PR1978-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java b/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java index f47da7b749..2f1b190f7d 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java @@ -9,10 +9,14 @@ * state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrEosDelft1998 extends SystemPrEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemPrEosDelft1998.
+ */ public SystemPrEosDelft1998() { super(); modelName = "PR Delft1998 EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java b/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java index 82d3f7f11a..4d36fb4817 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java +++ b/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the PR Gassem equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrGassemEos extends SystemPrEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java b/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java index 870529eec1..1f01eb13e5 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java +++ b/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java @@ -4,6 +4,7 @@ * This class defines a thermodynamic system using the PR Mathias Copeman equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrMathiasCopeman extends SystemPrEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemProperties.java b/src/main/java/neqsim/thermo/system/SystemProperties.java index 37c290733e..720241890c 100644 --- a/src/main/java/neqsim/thermo/system/SystemProperties.java +++ b/src/main/java/neqsim/thermo/system/SystemProperties.java @@ -6,10 +6,14 @@ /** * Class to get physical properties of system and its phases. + * + * @author ASMF + * @version $Id: $Id */ public class SystemProperties { private Double[] values; private String[] names; + /** ConstantnCols=(16 * 4) + 6
*/
public static final int nCols = (16 * 4) + 6;
/**
@@ -181,7 +185,7 @@ public SystemProperties(SystemInterface fluid) {
/**
* Get property names and values as a map
- *
+ *
* @return map of property name and values
*/
public HashMapConstructor for SystemPsrkEos.
+ */ public SystemPsrkEos() { super(); modelName = "Predictive-SRK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemRKEos.java b/src/main/java/neqsim/thermo/system/SystemRKEos.java index b4bd86de18..c4e18f8652 100644 --- a/src/main/java/neqsim/thermo/system/SystemRKEos.java +++ b/src/main/java/neqsim/thermo/system/SystemRKEos.java @@ -7,10 +7,14 @@ * This class defines a thermodynamic system using the RK equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemRKEos extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemRKEos.
+ */ public SystemRKEos() { super(); modelName = "RK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPA.java b/src/main/java/neqsim/thermo/system/SystemSrkCPA.java index f0bda8105b..82283488e7 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPA.java @@ -8,11 +8,14 @@ * This class defines a thermodynamic system using the CPA EoS equation of state. * * @author Even Solbraa + * @version $Id: $Id */ - public class SystemSrkCPA extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkCPA.
+ */ public SystemSrkCPA() { super(); modelName = "CPA-SRK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java b/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java index a5921eb7be..35c6b1fe7d 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the sCPA-EOS equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkCPAs extends SystemSrkCPA { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkCPAs.
+ */ public SystemSrkCPAs() { super(); this.useVolumeCorrection(true); diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java b/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java index 75b6a4001b..bcea37fb6e 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the CPA-EOS of Equinor equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkCPAstatoil extends SystemSrkCPAs { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkEos.java b/src/main/java/neqsim/thermo/system/SystemSrkEos.java index dc2a5276ea..210c1156ac 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the SRK equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkEos extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java b/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java index 2af3aaed3e..c4ebc06ecf 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the SRK with Mathias Copeman equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkMathiasCopeman extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkMathiasCopeman.
+ */ public SystemSrkMathiasCopeman() { super(); modelName = "Mathias-Copeman-SRK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java b/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java index e175ffd6fc..e05339901c 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the SRK Peneloux equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkPenelouxEos extends SystemSrkEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java b/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java index 4a38fa3ab6..76040849ca 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the SRK Schwartzentruber equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkSchwartzentruberEos extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkSchwartzentruberEos.
+ */ public SystemSrkSchwartzentruberEos() { super(); modelName = "ScRK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java index 518eff5f91..8209d33fbd 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the SRK Two Coon equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkTwuCoonEos extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkTwuCoonEos.
+ */ public SystemSrkTwuCoonEos() { super(); modelName = "TwuCoonRK-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java index a800bd11cc..859167832a 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the SRK Two Coon Param equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkTwuCoonParamEos extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkTwuCoonParamEos.
+ */ public SystemSrkTwuCoonParamEos() { super(); modelName = "TwuCoonRKparam-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java index 13eb4b2450..624e0c5a57 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java @@ -10,6 +10,9 @@ public class SystemSrkTwuCoonStatoilEos extends SystemSrkEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemSrkTwuCoonStatoilEos.
+ */ public SystemSrkTwuCoonStatoilEos() { super(); modelName = "TwuCoonStatoil-EOS"; diff --git a/src/main/java/neqsim/thermo/system/SystemTSTEos.java b/src/main/java/neqsim/thermo/system/SystemTSTEos.java index 1c40195b63..21899bf3be 100644 --- a/src/main/java/neqsim/thermo/system/SystemTSTEos.java +++ b/src/main/java/neqsim/thermo/system/SystemTSTEos.java @@ -8,6 +8,7 @@ * This class defines a thermodynamic system using the TST equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemTSTEos extends SystemEos { private static final long serialVersionUID = 1000; diff --git a/src/main/java/neqsim/thermo/system/SystemThermo.java b/src/main/java/neqsim/thermo/system/SystemThermo.java index 31b59e0339..a86c71e1ee 100644 --- a/src/main/java/neqsim/thermo/system/SystemThermo.java +++ b/src/main/java/neqsim/thermo/system/SystemThermo.java @@ -3103,7 +3103,11 @@ public double getCorrectedVolume() { return volume; } - /** {@inheritDoc} */ + /** + * {@inheritDoc} + * + * @return a double + */ public double getdPdVtn() { double dPdV = 0.0; for (int i = 0; i < numberOfPhases; i++) { @@ -3206,13 +3210,7 @@ public double getCv(String unit) { return refCv * conversionFactor; } - /** - * {@inheritDoc} - * - * @return kappa real gas kappa - * - * method to return real gas isentropic exponent (kappa = - Cp/Cv*(v/p)*dp/dv - */ + /** {@inheritDoc} */ @Override public double getKappa() { return -getCp() / getCv() * getVolume() / getPressure() * getdPdVtn(); @@ -5157,14 +5155,11 @@ private void setMolarFractions(double[] molefractions, String type) { } /** + * {@inheritDoc} + * ** addCharacterized. *
- * - * @param charNames an array of {@link java.lang.String} objects - * @param charFlowrate an array of {@link double} objects - * @param molarMass an array of {@link double} objects - * @param relativedensity an array of {@link double} objects */ @Override public void addCharacterized(String[] charNames, double[] charFlowrate, double[] molarMass, @@ -5178,16 +5173,11 @@ public void addCharacterized(String[] charNames, double[] charFlowrate, double[] } /** + * {@inheritDoc} + * ** addCharacterized. *
- * - * @param charNames an array of {@link java.lang.String} objects - * @param charFlowrate an array of {@link double} objects - * @param molarMass an array of {@link double} objects - * @param relativedensity an array of {@link double} objects - * @param lumpComponents True if component should be lumped - * @param numberOfPseudoComponents number of pseudo components */ @Override public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, @@ -5222,15 +5212,11 @@ public void addOilFractions(String[] charNames, double[] charFlowrate, double[] } /** + * {@inheritDoc} + * ** addOilFractions. *
- * - * @param charNames an array of {@link java.lang.String} objects - * @param charFlowrate an array of {@link double} objects - * @param molarMass an array of {@link double} objects - * @param relativedensity an array of {@link double} objects - * @param lastIsPlusFraction a boolean */ @Override public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, @@ -5241,10 +5227,9 @@ public void addOilFractions(String[] charNames, double[] charFlowrate, double[] /** - * Return normal liquid density of fluid in given unit. + * {@inheritDoc} * - * @param unit Supported units are gr/cm3 and kg/m3. Defaults to gr/cm3. - * @return double Density of fluid. + * Return normal liquid density of fluid in given unit. */ public double getIdealLiquidDensity(String unit) { double normalLiquidDensity = 0.0; diff --git a/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java b/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java index 5788d18e2b..701a6d5288 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java @@ -21,6 +21,9 @@ public class SystemUMRCPAEoS extends SystemPrEos { private static final long serialVersionUID = 1L; + /** + *Constructor for SystemUMRCPAEoS.
+ */ public SystemUMRCPAEoS() { super(); modelName = "UMR-CPA"; @@ -34,6 +37,12 @@ public SystemUMRCPAEoS() { } } + /** + *Constructor for SystemUMRCPAEoS.
+ * + * @param T a double + * @param P a double + */ public SystemUMRCPAEoS(double T, double P) { super(T, P); modelName = "UMR-CPA"; diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java index ff12971482..c6bfc50c98 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the UMR-PRU equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUMRPRUEos extends SystemPrEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemUMRPRUEos.
+ */ public SystemUMRPRUEos() { super(); setBmixType(1); diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java index 4f3babddef..cc8245adf6 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java @@ -4,10 +4,14 @@ * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUMRPRUMCEos extends SystemUMRPRUEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemUMRPRUMCEos.
+ */ public SystemUMRPRUMCEos() { super(); setBmixType(1); diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java index 5eefcbcf8b..866a870434 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java @@ -21,6 +21,9 @@ public class SystemUMRPRUMCEosNew extends SystemUMRPRUMCEos { private static final long serialVersionUID = 1L; + /** + *Constructor for SystemUMRPRUMCEosNew.
+ */ public SystemUMRPRUMCEosNew() { super(); modelName = "UMR-PRU-MC-EoS-New"; @@ -34,6 +37,12 @@ public SystemUMRPRUMCEosNew() { } } + /** + *Constructor for SystemUMRPRUMCEosNew.
+ * + * @param T a double + * @param P a double + */ public SystemUMRPRUMCEosNew(double T, double P) { super(T, P); modelName = "UMR-PRU-MC-EoS-New"; diff --git a/src/main/java/neqsim/thermo/system/SystemUNIFAC.java b/src/main/java/neqsim/thermo/system/SystemUNIFAC.java index be16897382..a28170090c 100644 --- a/src/main/java/neqsim/thermo/system/SystemUNIFAC.java +++ b/src/main/java/neqsim/thermo/system/SystemUNIFAC.java @@ -9,10 +9,14 @@ * for gas. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUNIFAC extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemUNIFAC.
+ */ public SystemUNIFAC() { super(); modelName = "UNIFAC-GE-model"; diff --git a/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java b/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java index 5da5a85254..496413109f 100644 --- a/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java +++ b/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java @@ -8,10 +8,14 @@ * This class defines a thermodynamic system using the UNIFAC for liquid and PSRK EoS for gas. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUNIFACpsrk extends SystemEos { private static final long serialVersionUID = 1000; + /** + *Constructor for SystemUNIFACpsrk.
+ */ public SystemUNIFACpsrk() { super(); modelName = "UNIFAC-GE-model"; diff --git a/src/main/java/neqsim/thermo/util/GERG/DETAIL.java b/src/main/java/neqsim/thermo/util/GERG/DETAIL.java index c94871325a..e503c9f8f8 100644 --- a/src/main/java/neqsim/thermo/util/GERG/DETAIL.java +++ b/src/main/java/neqsim/thermo/util/GERG/DETAIL.java @@ -79,14 +79,14 @@ public class DETAIL { double K3; double dPdDsave; - /** - *- * sq. - *
- * - * @param x a double - * @return a double - */ + /** + *+ * sq. + *
+ * + * @param x a double + * @return a double + */ public double sq(double x) { return x * x; } diff --git a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java index dd86642aed..eb24724676 100644 --- a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java +++ b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java @@ -19,13 +19,27 @@ */ public class EclipseFluidReadWrite { static Logger logger = LogManager.getLogger(EclipseFluidReadWrite.class); + /** ConstantpseudoName=""
*/
public static String pseudoName = "";
+ /**
+ * setComposition.
+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + * @param inputFile a {@link java.lang.String} object + * @param pseudoNameIn a {@link java.lang.String} object + */ public static void setComposition(SystemInterface fluid, String inputFile, String pseudoNameIn) { pseudoName = pseudoNameIn; setComposition(fluid, inputFile); } + /** + *setComposition.
+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + * @param inputFile a {@link java.lang.String} object + */ public static void setComposition(SystemInterface fluid, String inputFile) { fluid.setEmptyFluid(); try (BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)))) { @@ -91,6 +105,13 @@ public static void setComposition(SystemInterface fluid, String inputFile) { } } + /** + *read.
+ * + * @param inputFile a {@link java.lang.String} object + * @param pseudoNameIn a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ public static SystemInterface read(String inputFile, String pseudoNameIn) { pseudoName = pseudoNameIn; return read(inputFile); diff --git a/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java b/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java index f2d5b3ef2b..d92c248b9e 100644 --- a/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java +++ b/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java @@ -1931,7 +1931,7 @@ public void flash(String flashType, double spec1, double spec2, String unitSpec1 /** * Perform flashes and return System properties per set of Spec1 and Spec2. - * + * * Possible to specify fractions for each value of Spec1. * * @param Spec1 Flash pressure in bar absolute. diff --git a/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java b/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java index 8180cc172d..ef983a2c32 100644 --- a/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java +++ b/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java @@ -25,6 +25,9 @@ public class ChemicalEquilibrium extends BaseOperation { SystemInterface system; + /** + *Constructor for ChemicalEquilibrium.
+ */ public ChemicalEquilibrium() {} /** diff --git a/src/main/java/neqsim/util/NamedBaseClass.java b/src/main/java/neqsim/util/NamedBaseClass.java index 8bb97a43bf..5b0b093738 100644 --- a/src/main/java/neqsim/util/NamedBaseClass.java +++ b/src/main/java/neqsim/util/NamedBaseClass.java @@ -2,7 +2,9 @@ /** * Abstract class for named objects. - * + * + * @author ASMF + * @version $Id: $Id */ public abstract class NamedBaseClass implements NamedInterface, java.io.Serializable { private static final long serialVersionUID = 1L; @@ -10,7 +12,7 @@ public abstract class NamedBaseClass implements NamedInterface, java.io.Serializ /** * Constructor for NamedBaseClass - * + * * @param name the name of the class */ public NamedBaseClass(String name) { @@ -18,9 +20,9 @@ public NamedBaseClass(String name) { } /** + * {@inheritDoc} + * * Getter for property name - * - * @return Name property */ @Override public String getName() { @@ -28,9 +30,9 @@ public String getName() { } /** + * {@inheritDoc} + * * Setter for property name - * - * @param name Name to set. */ @Override public void setName(String name) { diff --git a/src/main/java/neqsim/util/NamedInterface.java b/src/main/java/neqsim/util/NamedInterface.java index b5e664d780..1dbaa36e7d 100644 --- a/src/main/java/neqsim/util/NamedInterface.java +++ b/src/main/java/neqsim/util/NamedInterface.java @@ -1,5 +1,11 @@ package neqsim.util; +/** + *NamedInterface interface.
+ * + * @author ASMF + * @version $Id: $Id + */ public interface NamedInterface { /** *
diff --git a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java
index 65faeed30c..4540baf0c3 100644
--- a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java
+++ b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java
@@ -44,6 +44,8 @@ public void setCreateTemporaryTables(boolean createTemporaryTables) {
/** Constant dataBasePath=""
. */
public static String dataBasePath = "";
+ /** Constant username=""
*/
+ /** Constant password=""
*/
public static String username = "", password = "";
static Logger logger = LogManager.getLogger(NeqSimExperimentDatabase.class);
private static boolean createTemporaryTables = false;
diff --git a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java b/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
index a321607263..c1514c97bd 100644
--- a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
+++ b/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
@@ -44,6 +44,8 @@ public void setCreateTemporaryTables(boolean createTemporaryTables) {
/** Constant dataBasePath=""
. */
public static String dataBasePath = "";
+ /** Constant username=""
*/
+ /** Constant password=""
*/
public static String username = "", password = "";
static Logger logger = LogManager.getLogger(NeqSimTechnicalDesignDatabase.class);
private static boolean createTemporaryTables = false;
diff --git a/src/main/java/neqsim/util/exception/NotInitializedException.java b/src/main/java/neqsim/util/exception/NotInitializedException.java
index 6acc743a5c..7cd6d29e62 100644
--- a/src/main/java/neqsim/util/exception/NotInitializedException.java
+++ b/src/main/java/neqsim/util/exception/NotInitializedException.java
@@ -38,7 +38,7 @@ public NotInitializedException(String className, String methodName, String param
/**
* Constructs an NotInitializedException
with the specified detail message.
- *
+ *
* @param obj Object exception is raised from
* @param methodName Method exception is raised from
* @param msg Detailed error message
@@ -49,7 +49,7 @@ public NotInitializedException(Object obj, String methodName, String msg) {
/**
* Constructs an NotInitializedException
with default detail message.
- *
+ *
* @param obj Object exception is raised from
* @param methodName Method exception is raised from
* @param parameter Parameter not initialized
diff --git a/src/main/java/neqsim/util/exception/ThermoException.java b/src/main/java/neqsim/util/exception/ThermoException.java
index 8e47b01019..c574e49b0d 100644
--- a/src/main/java/neqsim/util/exception/ThermoException.java
+++ b/src/main/java/neqsim/util/exception/ThermoException.java
@@ -28,7 +28,7 @@ public ThermoException(String msg) {
/**
* Constructs an ThermoException
with the specified detail message.
- *
+ *
* @param className Class that exception is raised from
* @param methodName Method that exception is raised from
* @param msg specific error message
diff --git a/src/main/java/neqsim/util/exception/TooManyIterationsException.java b/src/main/java/neqsim/util/exception/TooManyIterationsException.java
index 97191e0374..a7e7d41de4 100644
--- a/src/main/java/neqsim/util/exception/TooManyIterationsException.java
+++ b/src/main/java/neqsim/util/exception/TooManyIterationsException.java
@@ -13,7 +13,7 @@ public class TooManyIterationsException extends neqsim.util.exception.ThermoExce
/**
* Constructs a TooManyIterationsException
with a standard error message.
- *
+ *
* @param className Class that exception is raised from
* @param methodName Method that exception is raised from
* @param maxIterations the maximum number of iterations
@@ -24,7 +24,7 @@ public TooManyIterationsException(String className, String methodName, long maxI
/**
* Constructs a TooManyIterationsException
with a standard error message.
- *
+ *
* @param obj object that exception is raised from
* @param methodName method that exception is raised from
* @param maxIterations the maximum number of iterations
diff --git a/src/main/java/neqsim/util/serialization/SerializationManager.java b/src/main/java/neqsim/util/serialization/SerializationManager.java
index e777c9e3cf..b2e3d8edc5 100644
--- a/src/main/java/neqsim/util/serialization/SerializationManager.java
+++ b/src/main/java/neqsim/util/serialization/SerializationManager.java
@@ -20,6 +20,9 @@
* @version $Id: $Id
*/
public class SerializationManager {
+ /**
+ *
Constructor for SerializationManager.
+ */ public SerializationManager() {} /** From a1c3b5b00f3c8f25ff3961b421f3b7d627910890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85smund=20V=C3=A5ge=20Fannemel?= <34712686+asmfstatoil@users.noreply.github.com> Date: Sat, 26 Nov 2022 12:21:00 +0100 Subject: [PATCH 082/171] refact: fixes to remove problems when running javadoc:fix (#586) * refact: fixes to remove problems when running javadoc:fix * fix --- .../methodInterface/DiffusivityInterface.java | 122 +++++++++--------- .../PhysicalProperties.java | 22 ++-- .../java/neqsim/thermo/phase/PhaseEos.java | 16 +-- .../database/NeqSimExperimentDatabase.java | 3 +- .../NeqSimTechnicalDesignDatabase.java | 3 +- 5 files changed, 81 insertions(+), 85 deletions(-) diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java index 68b5ef73e4..971510ea3c 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java @@ -11,71 +11,71 @@ * @version $Id: $Id */ public interface DiffusivityInterface extends ThermodynamicConstantsInterface, - neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { - /** - *- * calcBinaryDiffusionCoefficient. - *
- * - * @param i a int - * @param j a int - * @param method a int - * @return a double - */ - public double calcBinaryDiffusionCoefficient(int i, int j, int method); + neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { + /** + *+ * calcBinaryDiffusionCoefficient. + *
+ * + * @param i a int + * @param j a int + * @param method a int + * @return a double + */ + public double calcBinaryDiffusionCoefficient(int i, int j, int method); - /** - *- * calcDiffusionCoefficients. - *
- * - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - * @return an array of {@link double} objects - */ - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod); + /** + *+ * calcDiffusionCoefficients. + *
+ * + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + * @return an array of {@link double} objects + */ + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod); - /** - *- * getFickBinaryDiffusionCoefficient. - *
- * - * @param i a int - * @param j a int - * @return a double - */ - public double getFickBinaryDiffusionCoefficient(int i, int j); + /** + *+ * getFickBinaryDiffusionCoefficient. + *
+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getFickBinaryDiffusionCoefficient(int i, int j); - /** - *- * getMaxwellStefanBinaryDiffusionCoefficient. - *
- * - * @param i a int - * @param j a int - * @return a double - */ - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j); + /** + *+ * getMaxwellStefanBinaryDiffusionCoefficient. + *
+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j); - /** - *- * getEffectiveDiffusionCoefficient. - *
- * - * @param i a int - * @return a double - */ - public double getEffectiveDiffusionCoefficient(int i); + /** + *+ * getEffectiveDiffusionCoefficient. + *
+ * + * @param i a int + * @return a double + */ + public double getEffectiveDiffusionCoefficient(int i); - /** - *- * calcEffectiveDiffusionCoefficients. - *
- */ - public void calcEffectiveDiffusionCoefficients(); + /** + *+ * calcEffectiveDiffusionCoefficients. + *
+ */ + public void calcEffectiveDiffusionCoefficients(); - /** {@inheritDoc} */ - @Override - public DiffusivityInterface clone(); + /** {@inheritDoc} */ + @Override + public DiffusivityInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java index f93cd0bb89..a4dc906227 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java @@ -255,6 +255,13 @@ public void setPhases() { diffusivityCalc.setPhase(this); } + /** {@inheritDoc} */ + @Override + public void setPhase(PhaseInterface phase) { + this.phase = phase; + this.setPhases(); + } + /** {@inheritDoc} */ @Override public void init(PhaseInterface phase) { @@ -275,13 +282,6 @@ public void init(PhaseInterface phase) { } } - /** {@inheritDoc} */ - @Override - public void setPhase(PhaseInterface phase) { - this.phase = phase; - this.setPhases(); - } - /** {@inheritDoc} */ @Override public void init(PhaseInterface phase, String type) { @@ -349,13 +349,7 @@ public double getKinematicViscosity() { return kinematicViscosity; } - /** - * {@inheritDoc} - * - *- * getDiffusionCoefficient. - *
- */ + /** {@inheritDoc} */ public double getDiffusionCoefficient(int i, int j) { return diffusivityCalc.getMaxwellStefanBinaryDiffusionCoefficient(i, j); } diff --git a/src/main/java/neqsim/thermo/phase/PhaseEos.java b/src/main/java/neqsim/thermo/phase/PhaseEos.java index 71b2ab1de4..cf82dbcb76 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseEos.java @@ -510,12 +510,6 @@ public double geta(PhaseInterface phase, double temperature, double pressure, in / numberOfMolesInPhase; } - /** {@inheritDoc} */ - @Override - public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return calcB(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase; - } - /** * @return double */ @@ -523,6 +517,12 @@ public double getb(PhaseInterface phase, double temperature, double pressure, in return loc_A / numberOfMolesInPhase / numberOfMolesInPhase; } + /** {@inheritDoc} */ + @Override + public double getA() { + return loc_A; + } + /** * @return double */ @@ -532,8 +532,8 @@ public double getb(PhaseInterface phase, double temperature, double pressure, in /** {@inheritDoc} */ @Override - public double getA() { - return loc_A; + public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return calcB(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase; } /** {@inheritDoc} */ diff --git a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java index 4540baf0c3..8ff03de100 100644 --- a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java +++ b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java @@ -45,8 +45,9 @@ public void setCreateTemporaryTables(boolean createTemporaryTables) { public static String dataBasePath = ""; /** Constantusername=""
*/
+ public static String username = "";
/** Constant password=""
*/
- public static String username = "", password = "";
+ public static String password = "";
static Logger logger = LogManager.getLogger(NeqSimExperimentDatabase.class);
private static boolean createTemporaryTables = false;
diff --git a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java b/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
index c1514c97bd..74bd36f99b 100644
--- a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
+++ b/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java
@@ -45,8 +45,9 @@ public void setCreateTemporaryTables(boolean createTemporaryTables) {
public static String dataBasePath = "";
/** Constant username=""
*/
+ public static String username = "";
/** Constant password=""
*/
- public static String username = "", password = "";
+ public static String password = "";
static Logger logger = LogManager.getLogger(NeqSimTechnicalDesignDatabase.class);
private static boolean createTemporaryTables = false;
From 0acbf07959d5cdcdf6555a1712b0edd05be272de Mon Sep 17 00:00:00 2001
From: Even Solbraa <41290109+EvenSol@users.noreply.github.com>
Date: Mon, 28 Nov 2022 22:11:55 +0100
Subject: [PATCH 083/171] 587 add compressibility functions x and y (#588)
* added compressibility functions
* updated tests
---
src/main/java/neqsim/thermo/phase/Phase.java | 25 ++++++++++++
.../java/neqsim/thermo/phase/PhaseEos.java | 4 +-
.../neqsim/thermo/phase/PhaseInterface.java | 39 +++++++++++++++++++
.../neqsim/thermo/system/SystemPrEosTest.java | 33 ++++++++++++++++
4 files changed, 100 insertions(+), 1 deletion(-)
diff --git a/src/main/java/neqsim/thermo/phase/Phase.java b/src/main/java/neqsim/thermo/phase/Phase.java
index d9a7174a7f..5bc2a1e54c 100644
--- a/src/main/java/neqsim/thermo/phase/Phase.java
+++ b/src/main/java/neqsim/thermo/phase/Phase.java
@@ -2152,4 +2152,29 @@ public double getFlowRate(String flowunit) {
public String getThermoPropertyModelName() {
return thermoPropertyModelName;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public double getCompressibilityX(){
+ return getTemperature()/getTotalVolume()*getdPdTVn()/getdPdVTn();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public double getCompressibilityY(){
+ return getPressure()/getTotalVolume()*1.0/getdPdVTn();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public double getIsothermalCompressibility(){
+ return -1.0/getTotalVolume()*1.0/getdPdVTn();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public double getIsobaricThermalExpansivity(){
+ return 1.0/getTotalVolume()*getdPdTVn()/getdPdVTn();
+ }
+
}
diff --git a/src/main/java/neqsim/thermo/phase/PhaseEos.java b/src/main/java/neqsim/thermo/phase/PhaseEos.java
index cf82dbcb76..60b6033d57 100644
--- a/src/main/java/neqsim/thermo/phase/PhaseEos.java
+++ b/src/main/java/neqsim/thermo/phase/PhaseEos.java
@@ -1282,4 +1282,6 @@ public double dFdNdT(int i) {
return ((ComponentEosInterface) getComponent(i)).dFdNdT(this, this.getNumberOfComponents(),
temperature, pressure);
}
-}
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/neqsim/thermo/phase/PhaseInterface.java b/src/main/java/neqsim/thermo/phase/PhaseInterface.java
index b90e4311e1..8b5a77701a 100644
--- a/src/main/java/neqsim/thermo/phase/PhaseInterface.java
+++ b/src/main/java/neqsim/thermo/phase/PhaseInterface.java
@@ -155,6 +155,45 @@ public default double getGamma2() {
*/
public double getWtFractionOfWaxFormingComponents();
+ /**
+ * + * getCompressibilityX. + *
+ * + * @return a double + */ + public double getCompressibilityX(); + + /** + *+ * getCompressibilityY. + *
+ * + * @return a double + */ + public double getCompressibilityY(); + + /** + + /** + *+ * getIsothermalCompressibility. + *
+ * + * @return a double + */ + public double getIsothermalCompressibility(); + +/** + *+ * getIsobaricThermalExpansivity. + *
+ * + * @return a double + */ + public double getIsobaricThermalExpansivity(); + + /** ** getdrhodN. diff --git a/src/test/java/neqsim/thermo/system/SystemPrEosTest.java b/src/test/java/neqsim/thermo/system/SystemPrEosTest.java index 8d30856733..e188951da3 100644 --- a/src/test/java/neqsim/thermo/system/SystemPrEosTest.java +++ b/src/test/java/neqsim/thermo/system/SystemPrEosTest.java @@ -157,4 +157,37 @@ public void checkKappa() { testSystem.getPhase("gas").getKappa(); assertEquals(testSystem.getKappa(), testSystem.getPhase("gas").getKappa(), 1e-5); } + + /** + *
+ * checCompressibilityFunctions. + *
+ */ + @Test + @DisplayName("check compressibility functions") + public void checkCompressibilityFunctions() { + neqsim.thermo.system.SystemPrEos testSystem = + new neqsim.thermo.system.SystemPrEos(298.0, 75.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + double isoThermComp = testSystem.getPhase("gas").getIsothermalCompressibility(); + // assertEquals(1.0, isoThermComp, 1e-5); + + double isobaricThermalExpansivity = testSystem.getPhase("gas").getIsobaricThermalExpansivity(); + // assertEquals(1.0, isobaricThermalExpansivity, 1e-5); + + double compressibilityX = testSystem.getPhase("gas").getCompressibilityX(); + // assertEquals(1.0, compressibilityX, 1e-5); + + double compressibilityY = testSystem.getPhase("gas").getCompressibilityY(); + // assertEquals(1.0, compressibilityY, 1e-5); + } + } From cbec5c3c6366f2391c90f2707ee3dbf3805dc5e2 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Wed, 21 Dec 2022 23:32:26 +0100 Subject: [PATCH 084/171] update ejml to version 0.41.1 (#591) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1a702762d8..6a89639bcf 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@- * commonInit. - *
- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - */ - public void commonInit(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - VCommontemp = 0; - FCommontemp = 0; - ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); - - for (int j = 0; j < numberOfComponents; j++) { - VCommontemp += compArray[j].getx() * compArray[j].getR(); - FCommontemp += (compArray[j].getQ() * compArray[j].getx()); - } - } // TODO impement dlngammadn @@ -398,8 +374,8 @@ public double getGamma(PhaseInterface phase, int numberOfComponents, double temp return gamma; } - double V = this.getx() * this.getR() / VCommontemp; - double F = this.getx() * this.getQ() / FCommontemp; + double V = this.getx() * this.getR() / ((PhaseGEUnifacUMRPRU) phase).getVCommontemp(); + double F = this.getx() * this.getQ() / ((PhaseGEUnifacUMRPRU) phase).getFCommontemp(); lngammaCombinational = -10.0 / 2.0 * getQ() * (Math.log(V / F) + 1.0 - V / F); diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java index 7309d2da82..ea329c567a 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java @@ -19,6 +19,9 @@ public class PhaseGEUnifacUMRPRU extends PhaseGEUnifac { double[] Qmix = null; double[][] QmixdN = null; String[] gropuNames = null; + double VCommontemp = 0.0; + double FCommontemp = 0.0; + static Logger logger = LogManager.getLogger(PhaseGEUnifacUMRPRU.class); /** @@ -56,6 +59,27 @@ public PhaseGEUnifacUMRPRU(PhaseInterface phase, double[][] alpha, double[][] Di this.setMixingRule(2); } + + public void calcCommontemp(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, int phasetype) { + FCommontemp = 0; + VCommontemp = 0; + ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); + + for (int j = 0; j < numberOfComponents; j++) { + FCommontemp += (compArray[j].getQ() * compArray[j].getx()); + VCommontemp += compArray[j].getx() * compArray[j].getR(); + } + } + + public double getVCommontemp() { + return VCommontemp; + } + + public double getFCommontemp() { + return FCommontemp; + } + /** {@inheritDoc} */ @Override public void addcomponent(String componentName, double moles, double molesInPhase, @@ -88,8 +112,9 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, double temperature, double pressure, int phasetype) { double GE = 0.0; - ((ComponentGEUnifacUMRPRU) phase.getComponents()[0]).commonInit(phase, numberOfComponents, - temperature, pressure, phasetype); + calcCommontemp(phase, numberOfComponents, temperature, pressure, phasetype); + //((ComponentGEUnifacUMRPRU) phase.getComponents()[0]).commonInit(phase, numberOfComponents, + //temperature, pressure, phasetype); initQmix(); if (getInitType() > 2) From 2ac3d7f7fec14ef44de6d926936bd1ff14ed5577 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Thu, 22 Dec 2022 21:45:52 +0100 Subject: [PATCH 086/171] Update verify_build.yml --- .github/workflows/verify_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/verify_build.yml b/.github/workflows/verify_build.yml index 17c3d8bbd4..7da5cdd078 100644 --- a/.github/workflows/verify_build.yml +++ b/.github/workflows/verify_build.yml @@ -6,8 +6,8 @@ on: branches: # Only run for changes in master branch and any releases branch - master - 'releases/**' - paths: # Only run if some java-file is updated - - '*.java' + # paths: # Only run if some java-file is updated + # - '*.java' pull_request: branches: - master From 82aaa2544da8d4684500505df5eb9f032ca6d6d7 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Thu, 22 Dec 2022 22:18:40 +0100 Subject: [PATCH 087/171] update to version 2.4.2 (#593) * update to version 2.4.2 * Update pomJava8.xml --- pom.xml | 2 +- pomJava8.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 6a89639bcf..ea909987ff 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@7U~%k6pVVsk_VK};WO>rl?{6kSU)m)d_HvK< z79(rlkR1Wgw>MrmAs)6~Ftg?hc0IhQUWFaTdVj_aRzW_LFwcXo0m~$3(Pa9k#9gqT z>v8Ql7BUfR1)Vb9UY~jlpjX(&tS!9U%GUlLu*-i3_wbXIQ@(Q*B$@BiZB4*qIRUNT zsckY?)*`CTSYA_Fw6J<~uo@!ME{Q?~=bpK`9CMU)N0PiAKSn+t^QB?SKDE()*nA!= zJU0-|Q%_;zg7*Bk47f!DAY zH-eW6`8d4Bgc1&!F+4?h>$~rwn5(&D=W4$6({IHrD9d#A>Gv*m<3T$A4-cLCEGAO* zV68fQYmRKkGr{l`Y2?W7PF#{c4xirMq>-68$W*rpNS-)=k0IU}Tz%EPOuU&T$n5hl zkPvy?#Fb$ wg7)=^?J#*}Mg1wRh2;sUg; zS!qRRZ~x=QO?#uuENqqr^YH5+cM-<&1c-ro7IlA@nj6ak{<86B%mDX8`V*Q~?8mPw zE&=>l#Yr?S+CE8ZpKP?eRTK^ecdnbVC+J7G%P=x#b~A9o{ohxl&%}|?+Bj&N^jjsF zy6brriW>{%IB84zWXD=8u(=Q)2sY%8o_$ ;*Umx0T&qhv4lcUX>P5oKeB;-$PT%!;lF^D z0i5Q1s?u(VZ5A)U0x)J}G$&8P)W z!7|853XuE+b99rAz(2C}^xzJD>oM?K^ZlZiYhxD8;^;!E3E?t7Px|U@F|+1e5IIIS zWS8ujC2DMl48{y(vpMBaHD@ZOd>6d39E+z^wDj{uB3!Ed%Za8X4p+w^y?!FwcF_-d z>mDtF6&geWafTJMkw~fIus>H| P4>C@Us=tHYHplj&` zUAEx02_D9`9+WCHbmddqIOs#0$G@jffW_w^;cQM+Oxa>RcTa}7DG5BZkJJmBwxj>a zrqAx+jtL&8b}+smXC6sv8wprcw>d9D4gDQS@*>p#4xC~pU!vsf5y%aR5_6)7v-D2t zcxo_c^?oPYVZLn9@0vCLjsg=puNZufNb^9BRF2Ui%EjAe4+}By^Gg8FUum>#;TBzZ zf&aeQQM>J$j4fOJV-|(r_`=$!-xX&9`2>a2UL=^%+DX@dxXVyhEJjOVlS~W8-w}h~ zVDrV^qAiBFGvg1jJqJXMTe~TO-VsmVAin;Y;r3r(;50tq6? H4- 7vrMJ?G)GXqAQO{FO>;7MWdY(e&8_as;#n=US6`yko7qtB{<@*_t`FouoCH$=Y z4+sGpvF8Gj9dMI{@6U*)d%RwQUkBhT@cqJ?)l6jJi!~^U0 X?*PeFcynf0Wemh z23AQ9S(1M*0k*u%-~Xzl;)Rgn#cAe?jr=2-kEUQAz%m3s kdwd8&`c!$;f~Hg1_|Z7|R~q7h&v2ZgQ3H_bjL3H4*!ZdD^@} 5~_4hRQS*{}+ZMc&d49TyxFGK52hOCopd zeec&Cx0E>h>L^GxFRyuGD2*(mcD1wX7h^nbNo9UGhIKTy#>5yd96tO^NCbmP@G!=) z=_^xBAbw&5MupqmC5@dk^vlGD2E3J+y)hVA!Yc{y-y5QyVbOn;Xi772PmCFenRLR# z3!;3>c)-V@Ur6~beC03}FR^H3bfSydvAGNl`jQR30E*?~C-Sb9WOj|+a19VGJSCiB z@VSU2{G}T5Si{B4QJLvX4+P+p6vg{F_#Jb0_i*o}kTVgtzXIY2U#(R6Gt!tJZ$l$6 zj;0m){OHyTqamVItQl)1amKWnEK{AZ`{iCM@{32WLwNn!+nZa02Av%Iu|E ;r8ddr==o>?X4RX+`31A!w}u3R^)))E% 5E^61$I`q0b$BOajTYn vF!?2J`$ubexSTx5md@j#iWkwq@DsY*n(+BzvFYFH4L$adi{7&((n z@6qcPpIKqb6fB3CFreO4Le+nI`^9hW X>A|VE0I4|`);egjs%#b&~OrU z{Uz#m)Z(=(cCt+E#j)A<6&l`L@LPWVkY&n6f8 |*%9X2K zl;8}H^v`Wg7B{jH=WiJbICzU-J(iKpqT=%dt0_M;2Ivr~8S%O+S_EWY-9OjI2 ^jLu^c}h*grYXNp@e{JA<(H@Ev4mw ~7}2F92Q{RRGP4I;p^c%6=cKrWKc z!Or&q+jBH3$dmkXM<9Hd^w%kMG)#`tP%g0?0|-U?=uK+3vOP&@5J@frHw8fFyPoVN z_dPUBaHew)hJ2f^$)J^k1Z5Z~>0}i-^)&z$%_+XN$KuVKwhtqgLdT%bn3xdf%-va1 zvfO_pfL7WJT^ A&QK|0yXYE=x%n7(=hxM1v~NMNXgZBDG-W@0|2paM}h)h zd%!PVFA}Vb(7wKuJR TJh#Q-bRx}gEb_)--kX^| &umqaQDbpC;OL zIiS&@UT4~J1@WIcZ+z27BPK>{cvOzTLa_Zvr)4?2tSH^RK-^iKK+2vwxh740jb7Va zoW||}(}W@x8s!iOhbF1U{OLXC_0O-{M+9fo_fyBc1#-kW_GpHS(&+f=R_BcQX<={X ztLCOK@%&xUDvP88!nB%T%>9?eN{6ER3gifloY2-b0DWW7ONa8ZPiQoIr|xfZy_z!q z3B_;%)R6{C`e6vS-sVrz&v4pv8jkEPU&u#5_A%zPKM{5vMUMH4^agM%;N55>{8s$< z@wCtplYW?CKIoxkyTAE1z6!nW8FPAQCQPcf(Q)92N;fEo4(X<=N_gro)Sh#k1(&1S zWNH3!RjyoG5T3iK_)A344a%!$Xe5!Q$@kLi9{insoC-V)P){Mv&;GDEN_(Y@r0G#5 zbs99Ip#-yu4dmFT7{qdnplum@GplvE@;91Qx;y2b?)RA7H=vGi;5J_bWJP*Iv!|mR zhD|V{xs@Q{FoR}9b9=3EyJ9+UQf`zymX?V>XLtLfRFZU0ORR^<#F!PY+t8=EI7%w; z&~~F_8HQpakZ;lxC2oJ_Xrk5|l)t5g!jLqEKp=O@kBP55BeSfVEg6WqUdaWi6NW=l zf~aI~Zb 8~gp94X;q0p0hcLm(s3rri?F@pfO$1(|?R0sCi`sUCDk!OhYl zQsF%3zmLEZ^4Jn9a#6;V)_+E{#Z^^0_eUR~IaNfKMMWbTqN*4O_r09^bHl7#wEBpJ zx5}!pmI`W3k1TPK50OWGqas|=LY1$JB^*z| ?
l;2RrNG7R>8$~QEaw%}Mrcw~}Chu8;=Y(AC~= hTrL}L-Yqf{y^lya>w+2xRd!6uf!Wk eN1#a3aM!KgSVp%!xM@07tM7 z%i(^*aYUV#ziHLV-$`czXY%G4)NY7%ZUb~(oD&(_61LLNgaPTEE5H~;A42qVOXf_z z!?(PBbcx}w-wr-fD7{c@8`BD)m-K u;8Z~- z{s(XmX@xQY3|623!D}N7mU%Ws->z(8wX73Sg}Lxw8;T ?ZY8duHIHzflXp^wi=zC{oD~h`hu+t-UNp|0S=D z>}dq~TN)@L07{XNr?i)a>_b>+FDq?mi>tfANE}t2&H8dv`RR1TDby8+-{KL|ZxpIptya08)dq(Zy;#y?|lB zD>u_85C|Bn*zbbEyj=q?1z5FtqKjN4Lo}l)KD@1a{;25YzMS}ueDM5L{ZlNdu3r53 zc~@=jcu0Jwt>98UP5pIwi^byX>rQk-VbWSSM|V@5w(+9r$XzX=)khHo#xDD&Wi-b# z<~BHS5gt^dXGja@Kx-F9$}^vwusEoYPM Dqtv2*BVd7@I20M$e*k;U@%O^g0gGt65@P&BLynqWd8UytVM6<7I*F> zzBKE{M+W8~^OdHkARg4rOvfR;@#_U;PUmF>yPHSji7lNdzGr1#oMZRr-~}PMIkfe3 z{^6vn!SSJiMdOkT=_Y6XU7tIbkd|zYifxGissSs7Fa!^QZ=cy6&iAe?xk+}OTteQF ze9cg#$obN90wcjaa6$Gn*(~LmRHX5~zvPK(;L=nyePbkGN@{KUG|(S%RJqDU57R;a zIqWlmo;m*q%3h~zl1fs8&bsBjZwJ+7Tm~Q7QAz s36kv3QZhK!&yy9#N%-<@o8XpY-&P==T6sf+Z)xC-E+yR^_Z z9z_Va;qJ+pgJpi13hl%!E?z{Csi8Gzz0O!K_&BVBF>?!%838$QmYSS73^9?lh`aU^ z;Ul@4)q_~bJ2JYHzLecctseoWK~g7XoqImGOL(=~Idl$pgMZ;dMKFc4n=rH9u?Il~ zy0|8}J+G;eL~ _gVBGVh-Mx@d83I3J|lKV35x zrhR|M5vV;-wcTWAqxwTXC>Ql1FfM0Cxk&e#y~q`NVdJMt(Pf;{l)rChz_=qp3U7+i zbhEti@xfA90UvHo5%jI0X^|_CI5#1GAd;-j@v)c7nYp&n6pvEWXFQ^ypl?eQF3VHO zw3eL8oAI)j4Jt$(35*k-HL{^{X>-G9{7yP6t 6eo#S6zr}=lGb*$84fVO3+CMTnVb8+H`Z28cs7946x8(}DZojk{Ols1gCHG$Pw~Njcv(^&0vpUQOQM;(Zbk zfM4huJl*xsiMJbyoltfHDlEd&ir6K94*nw{mF%i%<2G$mA6Gu;Hw9S=^pPLzx=S+5 z#e%p4jU8D^3|+u&rfn9r5U(NNgIr`I?4Q2Fk5iM2vyvdB6H37|0&&|;8gt|Tk~yeg zCK&{VQBb7xy!n8?Rlj?h=Y}D_oLraR4SV9Vh0e+oiz*?(BAMf4J2d%2@5l_uX~KL^ z_6#XKoJffPEf3#bh&M|K+`?H^n_GP}`P_~GP}}^nIR}(Ax7(KxxF+{+5(DFehW(uY zmop~=Z`QbVYJ;L(cFW>&!cvI^BZ> Nm>(EldhY4>Sy`d2g#ynhn=mp`9e5ji zFcgA`vyYwxA%u_?o)JV-Wtue091yA)Yfa-Ap(21ObGrd|kO8(-uJ c)a$}YeorzcMO3|Je*F#i`UpvZ#ZM-2*$I~xMj(5%|q32y?pd&=tam ~S# zEoF%e$lR}y`d(3y0t^cP40Eu1JAyyi+1t!2*`(lhq$Fhh%?(N#Ih&{r7|)(waYd?V z@e)H&@CMv<$|fyPmx#WS%t`lM3o1y*=nAJ;_hTCXcvEH{aRgU+i0vvPXK`!2aSok- zv3m$5bC`kxv7NmsxzAqFf5CGGIIu8{-Jq=vc8JZ5ih-eQ? tV0r-@ za`)?>VGunpCE0#r|Da({LrkZAmhcslDSdDAJ=E5*W@}o)1&agW`$*xgNm6{v8?-JD z1KyoQ5Diz|*EFS`tkYT};Todslf2--`-c94xvKV%=l&L;CZ`VL?(w%F_^-I+!@@&v(JpyJOIrcy! z`f05GzIOc@ALTsW8vP9eN%iHcI^LYG=WWGn(|R8h zEFdaLr;29=KcFpDi ^}y`RxNwIee` z#(FWgx3?MOHHz?T%X}>ls1!IsJEET42<8=!2luJ)HP tW0xlBhQ` z8~HWg@(N2Ix-;(L#X4;w@nBFQLtU5 zUj%-hE ^*f~gap}+^2*xIXw9-nfd<{=cf z6Z JU0>RP@Q!Dl6!vVOV+s2km~+oh>?~kI{!*&Vne~+J~TP;_s>OO z1Nr{CP=xDbwyA~MIWS~4E~qPdlkVt?aOGyJE$xSN#HCgP8WC|w)Jl?#4}9C?U&$)- zMnh8jhp^@Z)eYM$bPyO)n7j1`&JqiL7|tqNh)Qp&`Tc&}lr}^&tOL0bxyqE76&)1S z KoaAg{1gHi!7v{~go0M2%#=e~G4>kW{AfIbXuY!=A(XCHB$nm5i?8M)ju z%*i@w=!7*C=FW72{6Pw)&$GD|caYVBh7rPR2nl3+k%e2Ov%~>Ag+oyfN=Aw9V>$s! z@bsNx0fv09q#pCG(D!W4L}3kADzH`wps)?eQ(UL$a0`&lh<@9SfB57bQQiJ(j#LN! z0UbdkV-gKNl6N1#ryIO;$(|UyCKG}JJPh4qESPH?LA9H$$BSfa)&LUnNPx^^tbY+0 zoG4OiZ)U-24+-iFP%8W*8j=&utMi}~Q7M4o!Fvh;IE+M}L5LY;i_awIewT^@f)i+v zsD>r5LBf*YBfq~Knfd)mI^)~SxRpm1NEVQfAf+;3-;doC!75oG86ranMv#k4yyp>_ zN6xH>N|p-cCI6x}AOi6H40fesJ&&G^`BVvJ5u}KeAg~b5J*I#Lz1CAA=_T##>s%<- z6CXcJ3EtA{IJ{id*W}{wedUEqetq>6ltkY<-AL+1&zMA)j=aOJ<;^HwR))z$eM 6shOpF#f3MA>mz9z g?vx4I!O^8saHZx|B2o+5mF^xww zT$7uaYWkn3Bsi`qj2YaQwtU?Bx1KOK@T3JFIE|4N+}djw=16w|=W={BZSL 1CFB7lK+2ebGYd>Vf|SpksV#U%bE;O|QMAE@y(1@5cK4&jzS;cZliH8jbD@5U=* z=O|0(b|+T3i`A+_@lw5nWB`PhR3b72Fc|M(fQb<>rckIDKv+_VwU!rq0rTb}gO6K| zH!TDjb``we=Jv3 {K!(GLx3c?u&Ef3$d9`;9>A3yn{TaDUJ589U=ZCxQ-(<; z+er&g8>oW2a~OVpq!SoIosE0k8Tt0?Yc7P_KxI+1x%?wHC@2~RDnu4YsG0EJ0`ddc z+`pA*4^9G!A;khk6i|WAUEFEzN-7|F31H;%RKwz35lW~zjRDQDcaE{v6*Jh^-sDow zK}f8}Ko8PR+GxT67#ZPBOf6s f9OseJ*o4xV1(x z%?xzxf^D56-T}!_&I)TKU<-e{dpXs%%u=UMEyu?eqX!{M`0XU!%c*DOCF#oG9-Y#{ zTd&-kLYej}8?M|ZTNEU6itm4aS&RIQE#*DtCep@X48G4x`wy5p#r0Z1A%t!?-~hHM z)9Qu+debDBRei;iDiS^hLxpM(3BElr0i!|-xaCic^v^4An&%5YN zk9=~zZLFSH&I^Rk0Am<@{3kAOIR{&`%#xV+5XfOXWe<$y4j SWLw_m9S9g!b|#RZWZ+ zHJ*JDrUlqoIC!IhDbU zgJjj=Rf_aU<$M!@U-8v;D;kxRI24EySJAYOZJ#iA>~;HozCs=wF*BaftL_I+_DD z7&yg$WFjyT4EMeVCQ6Nm3*w};uwVEK9p(XPJir_DI?S`WQn9oU(_k)ad{${a{CZlQ zBbN>vhmq7jxK_JfP5>U2c_v9{%_&g}a2URgF7i&I4xhh-xHC^AHy?u^zB@Gj=Yvrx z@)~d}r#VV8ivu|*gg=18c+dvunMG1^c%f=9Pq{8e3D9B7kAWCWBELp~E93D)9ze}F z(jv{fdx(w9B86*!HoZiAs@`+N=i;<^Q%(}@gNrx3-NSeY spm}$T-NWgScta6^B zm4os{TjSIC;mh3i3mWG+*3Cuv`2Y*YOxJ4xA&Vk$dnx$WT-zK(N@z(Nt=Tk6Q1Sd_ zHIk2~#o6FM?sSggf!z$*Hj$A(KFAVq+6HBGVOMfDb4qAq0fUsu#L_CYFYT#%0*r{a zQ$2ttg1cwNe}R0MWTvA04 6825q_n&8W{kwQAwjlVN^yn@aw z4MBxqfBijr93v1PKFmVvN+~o^1^fu{y!pyj=ZGoWK$)}fl2O=&18+d=W3FTiZu8`P z=!rSYo^H;^R`;S-vn>j>5axEJ(r9tRNC71fF!>i$E?jiA2oQV%{~}i8-C^Fiz?%Eg zFY2cV7y*-atTWoDce(-^g|8=)ac$_zujEqZUl;_Ybf)9;+__BlbBIaJUYD6dH5OX> zMy9sFtHmL|BM7c JjU~LLF-AhBZ zBcN(%b!8wuc-o7!U(N=2XtYfq1tQJTTfhq!=qXJ l@Mvhu0_BR+vs?!BDV5#6x3TVO_E~Me@cL~ z-<+$zDS#?_im2) IniR$#d -tZ;E?xI~>i+qV zHYP?8uxMdw2)2K&e8VM +)eR5Ee^@N|v&*a2SDE=RAB zp 9u~qkixR^1f*)`veirrN=c6xi MNFG6AdLkAecNx+pwf#E7^M_*a%)_ UxDO=5ehV*q9p0`TO5U?qen&r%t6yAG>=EFa+?S_D zDZ9t|yM5v2!AwdIUJ(Lg)Zz^3pe*n+{1+-P=Zro2dRk*-8`*oKl6z8@_b7}&2`|3p zBi^L2gC;upDIC-LEn^h8D7hmKpUVu?DCDSP2_LTk+#XPWICV*3*6-kSUmYSWX5B|g z#LjC09%yNPj=CJE2ug^yn<3?Gm#GJBZfx#G0L20W_0ZNT?0}TVHO;Sjy=IRC0hkId zkW2q6hX+=87MkTx=fE@^#PXTqk&l{!bNF$eT%P&AU_S*uQy|*{K^O;L=IZfx`s|el z+kBxL*C*APFw*KO>P*=6A{lE_?ghD*?S?~)E>jadz^ztI65}Vo#j>uZsFIB+Y_l+! z>i $ZHMkL-_|`&fkSmG-79qJtC1s5M>U$!A1c9I-9>9rYG;r?Sh4ZQhgV zrdtQPDSMiw=Q+UHHaZyr?nUH6_gy!g-L**LvQpts;AytpW|^UKgv+r~-{)(C8VL4l z!Cs0eh0J+%D2V`A&!F=a?_5$UYXfQ?%`%N?<_(5xZa4%7CspRpYfU-kUSz^zkxpBr$kK4pCl(?pBPT-w8-mTFDue;t~ZZC+tY}YpyVgK|Z%eE_;Hy1Xw z$^XpGX-~L_gPWB5kp*T7<;@~^$iggB)ouX9mIUtYTu>3ghk9J_N)|4a)yhl2dD=5{ z_>p=P46dpK-_LM)?Q-4~iu^d%OVS1XBA{;oVitp5f~n^$^sb{kTN`e`LCCNz;F?gr z5FEFCzf?zaAmiLl1yum3FN9}JvsWBWfXRygsnW^H&VJYO+oZrsUg3Z+)4g=$Rlu2+ z%6)8iZ`fMCz#FPm5LQ|ht9DUDglU(z$UKnXsXG^=T~TUkV 47Gg8!5M)9+zsFXX0lW|Pl793 zb9~akg**=(;f-7Vxh|Kh>S#C^3KsKUT#8}mjByriXL2?BqE&r75<+{0Nq+oBE*ZP` z&N4Y2xB*WgCtqtw33bAs%Jq7!vEK5xBY8o1oH!>dw=WkAUju?$pOmLlx+x(RT9k-^ zI!SK5Pr1nW2+7qqxXxOPGDncv_}w*OX`=wquI0W#5&Fc7K!;Nsc&$)&C5J{&pib|R z5$?i;f;D)U!2)K&!wv3mh(NVDlYywz;w$F9YFtph>e-4;%MC=kgf1VTmc3T N zXSK%zhIznZ4SDx*i09>t8^EP|xPF_ RV)WpT_ 9v)d|NTb%sx7?KYLf!uhTJ|5D0lcLbf zT?O&94c(2)``62j81Xx=FWxT8pPm1?`+XH@6O-fY%iFWksX}@h%-X)5u*(Qi41@6p z9J1ysU@fvZV>Re3%JqP8(4-j$`XVIi-S^8^+rZkLra0c}soq{NxNYzq8AMpV4VFk- zC`F|GP5B>ikHJM94yIjQs5z=}F+25-vtL3Q;4r?~-!y}NE&rnq2d}W*{BuokEHvRD zUHv5aT>yNjy&MaW?a9XEudOeVHXQ26tasrCzz-~#VTv91O&Z|yaqBlRSu4@;-G~gX zYPHCLb)XEHI9XQub?vztUYZKRJ-FS_F9!w<*U<&S{ L8Nfsagg%Wxq4~~;}G|(uk$K9E1S~1F+ z>k5!|P=y)=Al{cl!4X0@bhEL(u>hObn@sIr^73#*fFsjYMI>rRr~j8abvP<8K7A%T zDJZ{?T^>_kx<)a`& mhz6(f$xdT^ z5o{Wfe2aLoGrb=B4qdtBsbMVtU=ubL@E$T4Ol9e+I$Oqbxe|`>mhkgOX>g&IVEP%b zU0_2_9)=+LFYWfB>OOn-hEIoey^sp!UWK##-QPZ-)|+6?aAPokN;HjPVJbcAtLbl{ zO1R^p{Y^FHNdBIeUiQ`VWySN;<7~&%*?om1hRXOp5a^)94L6>!gipYZGC!ue*Aac; z+^52!^`1nyWrr;|ppq?NygyuNFO$)hFz9V5e;M864Y1~_$kLwj1=fH3b+3EF(2VBP zhl1l&@+e@!R^+Y-PIHcn-MVaz!Fxs;=^7&Fp~m_^OrgJiS-~&mE(?ZS@rpX0w-bBp zm;2|3HCR+-z(tJ^v?Mun;dYqBf%{S%;J(z(Qg(_vlj+G5#&X8!Z8_3v<_cQQ`ueK1 zk_!j#J9>jPLty3lE0GezdVnY!3%CQt2kei%o^ZCK<*d24qSAGs{cQ&5*-Hy*mxl`* zSYl%!`->}*!~x#_A8X1PAJJ(_LhsB0*!p*cZD&c!G6JF<6N(%Aq8g~$5Z3BG3l$Ba z1e?2YmIXne_O*gD8(>Ac9o(c?*s=6CcNf$L%@9O<)C6ZY7JxefZ=pw9n(J9n3EBU> z2GHBOi+VW`aL1(pP*3{BN0a%#jQ@>4RRmq4ypUEek*@o^Yu@`Qp+y4h``gzSe=+>s zSueGJ>2=XAJaSR!as(K!Bvk?n_rNar0pPv4^F$_q9?i)LAUCQ~dvLhvxdQ_8D6ROd zKEgI|y}zL%$NS~PT<;1XRstsiRpGGv5xJHT$m!^35qfn?Av2_hDBFq5OJJbf23lY3 zVcPuL_o{UoUiG51H_a%(;{l6v^M8}L(Xh^D<(*@l(Gv9bwd?!uvCA(r =HrK zD6%G$A-jp~QWNc58GN&QBdumS2;T@a`lXO3=xpO4KMLB9O?V49b+V`5g&sM-w`jbG zt5%HMK63N`n5Ge1ph0*5%8JHVRU}!M8 ()4$D*&B5fwN`jjQfFS@g)VP}SejAD9*;{-xc! zm=G5bPyvI8n$!h&?2w=Uz+>0Ecx*G;{_7B~IIvlp%ZhZ)zWC*A6E%AeEMN;;$*P|6 z&dXNVw}S4^b>^qDSJvS4$&41r)ZoX_^04o`sCMm(;LHIHtkuDM)B~rgW(}{4R!&|R zSdHI3c}WjQ#EVvxMqA^-Uhd^%@c#s%9JG(JJ@SGW^DpAHSkcPU?7>^tA?;U 1IT{;K~wQm3A7-@EF2ZL`aXxS{Y-LnEeH%5OZF#wTz{w)%De7+t# zpF`qObyjg~eG7|jz+Fi7(aRu&8J`&FW*24aAX&8-?AkevYBD6+o`gEc#yc>)?X_=w zRWkE`=z7mUxW1@wlwtH1y_bYUuMxe6D2Xnjix5KeUWU;^kSNhbCx{x+86_ct=z?f7 zdJChEHshYj|9Rf~-VgWdI{U1)*Iw(l*WPo+6ga}-*8Rf+yc7Yv1a$ZO1`fJ2a-w@X z6n^Gj&@k WAi9BDGUfNmDKucto&qmBUJ6I(i#o(@~)i#XRNTG5}t zZjiWR|EtGy6*;$KYw;-nso1q#Gf3TQ179fGsAPYkL^JOaosX;Q=8PN1`3;cbQ0Ezd zVWyXs4>Q^Q)YxZGD!n4G9IK`!MT)&sp0*rYD|PI(6)LsbGP5%kxsO*ZvGB9Znv^ ?gdn<@31r&xfI 6%a&fPk$c9zB%anj0xL&oSt@?8p_aycc=b8X+g4(te>9 oRx(u|i+u9GT)vVufN+bX?k6G8RSqwpX xw))d4IZp} zESjISK)^Q!?XjP{hvw4CQv7v(m -1# ?T^1OXpT6;-R>o?k${2Vns`p-UwffaNZhK$InOF4-YA!(Jtds_~H7y z2_OT@=n>;}*VO&vj2hWHLYD;T(nO6Tymh@MTaQhaerzg=7 aWb(h>@uDRL(=EKFy^+%i|+Dv)G;LoIiWSBEe^Ay?s?k}XyyG%c)!Jfinlb<6Mc z!6mIxhtqOv(LEx(xwvI+vXvmg|K+<9&OdUAYPAH(Uk^Ij)dcOo2b8ukfP&x(tb%fY zg3`tB`XQJJ6UP#DxH5T6FqSvDX(8}K>WAbvIGio?5Tm3Kta{9VdLIqmGGlO+J%lbl zand>GCYQcJ-Fz!Ed_aP_&|#Q{4uPC)qraEB 1BkqNTb0?RE!< bndiv-kks)lF*-Z4jpN#SP#U1DTeA7k^^D$CekKeCy4SGX2@y`k*haI W@G^zHwaH-^C)~v_df^}UW9Sksd_qkv0rJ-%sdkRnfsslf5b+0 z`u~Xa>dL3ncGlRp>CBE${RNT>`7Up-VW{_RD%zG}yox%ZCydsHFD=5}nSU739$095 z{+&id8n)VLq@Op+E-~@yvC-r}wU%QaeRVfF9b`&km^;F7dTVz5Jusf++pEQb RJu@0T8 JhEikQ_W2*WbnqeqpsOxhEN#40>P^=D$19h{*Zn`UsY|reBGxbs z2&CdS<;?>3kPmKSf8hrYLHI4S6*W{PaaKEk07LoJWNrKdI>eG;u{K~qPzessXyw}F z`I*$Ow!%g|cm)nl2K8?=6`{W~XUHa~OYxhNqNDtT# }eSmk6$6Sbuc#V*hwQxFoQ4t>9^Qln$C7ynRupD^Squ zyX5%ssm9y +LE~HO_Il+Ci1JT;zrk1b_MY|r#mDnMYG@fu81Q2XUHr= zgnIf=ONXZdeZXkh>dpGshl-u3+dNI@m-eAup`NL8CcxBAdz&=?p{MM~Cjxfz Ek z()69{Fvdw7tqZ*ryONt54`2BjwCbOK_7cjFK{9iiX@n{6N90~kHer|>@8(v>@1K0o z`Cx2_Xal{oti{=#03}%F{f?Y2X<6%patNPR3*cAi?sf{k=tvCncvL15T;}*x!pv}~ z4diM`XTd?QwX&V#3Mk-tWLie2w*GM~2 +7-jGJn3Zp~aY)C`LEUY%p!8r#Lz>NWX~@iDPumy(HDRKU$W3ZJJ> zm8zjs8EsDi7d`mkK)eFE#>*WLf>dZbfTdef8~@Gs00>|~D67LxJc}^=-A3&oA9m#x zb#TTiPO&pnF4?IhC62n-Op?9B=WG?uQFHt%H@Pncbx67KH8l_<-ZIqyM5Syshu7=F z2l*0NWz-5GJV61%uSz+8ze4MCMh>}WsGU4Z#V#9;YpWDZg1%o7;pL0sk=aPm zqPDMSo*@j!09(5$Wp1C3Dt@bxsO4mD{B$8$9SYKJnfeOwKYoQyijG1ZqP@%UiEYAf zgx0ID(ZErkaG;0@A4%Z|s&BV} Qq{BUMiNbsmZFZ!Ff12K? z42*Og`5DnQqvA4QW=7trD7H{LQ=M9mbxJ7jSm$Y=To2_lsrP3WC=%lVtxzH-I52mG zI9E?|YaxV^vo6GEFqE#O$w~~)Sv4S(q{{ubj0)v5ohl^Ef8s)jF3|wU)8)WA?!Fh* zS$rW_*lDT^(P0t*SLj~-7E0<|50rCyH(K~E5ps#)4r#7Rd4qLXl6pw3L@cr~>U=4< zZ1?GrS~sp~?ldL%Tl2`~FYU5-L6A^I-_j3*Q<;`x=P!Jn_Vb%gfoZa8=261ub~9rp z7b}>& 8 z!`;GCvRjB|22T>&5(#Iaap*UgyI|djXxj{RaWImNqt&oGPKAFe==RXoKH)*vuy(>e z9pj>5Pn^o_De<-|sz~l}vf|+3g#B8cb=)=~o~kRZiH1u3-8jLlb`FHChK|{7sGAP? zt~S7A?zYaxKA|*~xp@M9xhtQY6`y9bxy_o>V%H@uMO6CHL!8-Z{-;C}Gx4jhZ!CqP zgQu8nL|EXL4Y>H-O|PfgRH* ZF{uQb^+6I5$C9cenw;DCHADnVRC+!oEW zKNtA3uI>)-G~(-q9u z`|^MR?2``4vWOnh2mePjXCeYHOIxY(hV?OhOkJPH&FI;^CS>yddP*fox;dRdmFgqa z?q^Vsg=5|oFo7X7-K~ues3MfhPYuHn5J-FPN_SJM!{uL;3tBbNM^!tIlyk|Pl}N=y zwQ7^3#69;St8pRg1ad}BF6~}T5yhGIItyOuf|hiC=be)UFXIvDHXOnW$B?H~Q<9#z zXRWKaq*xA`;Lcj?;sG|8qt<5;u5OMCrf)GY(5wY1{y!q!7F@PiV!!g?jWzDyYPtyQ z#9Wb_Ab01Pht81)y%<21w;76OxHy&oI3?1J^?emiT_d5iIw8(;eX{D}Z&te-*`Prc zu*~`Avay@gbU gCvlv2y+zManYDOwk5DrWyn|Ynf zs!`ZT-9@?M5aP01KImDX^gCJqY49!VjEi79Uj=?%&M($$Y8&g4%Zb0eU>+NwG-4ZW zyd`JOX%Z1zi$gS{s)C(e8*oBPRRBxFCnli_0p%!{Qcf%|trgS^$;EwJ%ae4zB)1f5 z&M&RPax?zuTl<0I>)%X}Q`7G{%_l-s2t+;c28oJjF~CN%g#@xEM{9ocM452L?jLU{ zu=f8DFX@Q_JgVur$67*u_+=jWZFgRB(G6B_KQ|sU$K|jb0>8aqqgri2LhDH<`_(N3 z&nF*~Ko0e&X5gM`A!%givjy<*uWyI%dLY(Yd4wcj!FuJqXRG{EFN;BZmeIOZtX*l+ zE5XR~po^coOT3!w8Va#CB3~p)*&5#jpEMb?jE-zA$q^6htnm>=$vRHO*pf;+KT#DJ z*&^WftY9kPq}ustz+uOI(uhQydd=G+HXVIX+{^64@oNB{xenS^Db~q=jdt2goUxHq zOBc^;+}6u*vsTmvOdnx7<
H!Zw)LPCP(9ySa=>0a%Lv}b%Yj>aUy!JsPGC4kz1!JDl0a@jJQld zaCE3(^T?J=ujZBuyl^Z<0u`K?Otr7f@%Loz4+I)st$cbKrE< z!`gp}8RqtuGZas{1 `jxnT{!U`W}w+aG#SWAq)-VX- z$wP0++MU+|b?;<3Ot +#`!E0x1&1!f8J<(Ez3H@UfIV&_?qZxf?C8 z$=s{AKloR* Nek~-EXOc2?%w}z)PCE6{4XIKy zkM=n^?{b7^0kESKTZY8;#J?n<2^Dz$4YdT^16)-G0@IxP(XE@`lpdnRrN(re-L)%V zY=(}vS6OaWaS16-S6-IFi6*U$0H)%Jk(nW&Sx>^ IsB{^I}Th8*G^sYUSyELt48+@UL=plV{X^ zjhsGt#^1`L9Pxk1I25LZ3sS^FrKz#R!cG4QmS#9>jp{uo{AOyI5M*vuWM feJgRTt5 ^z!B#`@fO+OYK{RuxnT_|;n{U3iHSA+qvr-m2ej0f$TYD%yxjvx#ER>j%J``<~av z_K=y&b`-uB-ikDqPTh~CXLJtWKDN~4l){=MWw!EP)VYH)TauLBXr3K$C=hX|D7o&| z8n^`A&8UBjL&HG*^IhHAN)D@02eG6~`CXqMQm%r?$xdS16;)8{t#r$1bGZH6RUjBL z+y=WXqehb)}E(fF#s$^w+8 zy88HbY|P)-?&(Sb9I%I*iUjL*a7qhFZbj*Q%VHUa1`Y+F4K_oZYK9BfsM=gnI5wy< zbm2-{Hc^yeL7hQCeB~H1W}^Bb1JL`(_TdW0v0?@CHtp65zt0 zOr^>UKw~B~oZ9M|0O7$Ct_%?2aF7+y#nC5tz>d0zNq(7Xe|5m3|NUP>3EQ#Z#bdF$ z>d?2E5xR5rWadu#Xc7oW+V*(#FV+HUWp~wrCv_awjMj`^RBOAWdkJ_}g-wPaG6(GisUHaGI zI(Z6op?GOvUFV{63R+bBq|@Q6 $VB@U;WEnfKA>2 z55VWX8tF@roI-!NIP5AuV}D=ETEq(GC3#oG`R2 G}Cfq1S2$ {{329Ew>70irK|)kHQ)CU95~b18&l! z5}fA=v}FD=1eF{cnBSs^b-y?w6Z254`cuz%Fi%Es{q!3Y347tEk-m)!X7w?zJ!Q2! zXbl|8-uQX~aRVKo(bx I-`0by~+y>Z$*hQy_kS)e0qzj>lkfC~ctlQne z)WE!&5nJC5hZ7wMy&(lWGyL!$@fmTbNOCvOlpw!zO-n*us1VCQHal%oJngZ)q{Dpx z^QX>MpatOkX5l5(wJ=-b-9kEdA42MuIwK%S$$C%4Y)uDTob9dp<_uiB POaK)Li6Ipx0SPZ26X;vZ>t)j~GFhJMvgLbfnx7$lUtd8L1!1tvcX z(LH&dH0T>zMJd*nbMJZ<*2{qfVwY!mn$Xi^4gas6F0O`-*U#Q6g%V-{LQg{Ti7&?^ z2~^o~uV>2LJA5R IG}p8**zN-Diark*MywJCvW=oN@0F~LKwk@LMCL5PQnh0e;KN_jF{r z-(hXzMHt$eB+Ls`x%`)0n`oSisFGHpKvA4b((M)9RBuS01?3s5-Th{oKXt)xy*g34 zCMPSMMBV@>zpBqX#@Mj_a&oYmW)t01Z7bkx@v(XUI4FCZ31#x_BRt$zxP%m_`1IaD z9w5r?`3Tp^Jcjvq__$w?G6S)ZL;f}MI20#r+YRUNYrMt2vS?RaEBCL~h2mTG>|uMD zzx_ R8bg~~R=aS%?9QxUBs3-bz zyVrp3v=CUd706FIJd77?wrf~d 9SzFD3>ID!u0v8R_i@s`3{FZDHW<;)#x~ YRf-Tl!%p7&H+wXwx+5L@iZ1Sf$am|;W=SXSkg_L?o#Aq`vbg(2klWWW^f z_wt)!tKieXf7r_%^#4z!Q3ilJ5xjU$$i>nmSb6yT(=Yy;31*ZWR;r51!Qhw90j$vL zgmj{Hf6i3W?T85Da-LKa7eVK%H~OI>w+4aZr`tT8+iw}de3?0?US@#`E$P|G&5Pg8 zZY`CO-~M0q d zN8_)LRoiAMlb`ZzC737Dwyg2{6kQ@aZ*`55nmBTo#G|QVuqDdU3tOTBw$ne};_O#C zy1ggoIpC}D-vikm^%nQX$YTlMa|JVmpOb{o)L8$WP{{vJg#}tEGT4=ZeZ^IS&tt&k z-^OSHC8hixyCeYSK#fAARF2Jb-YMh}zF ;#Estu^LAYZrzzjXSlMy_1_ygFeYh>&v zNX!AQvJrtYFaS};xW*40u5@$GFacGNr3 0 zf*m+2q8j{nlq2>NsrTT#Qi2*-KmSgafLE{wH~YZB%_2}5vxjE(dpT!xW@PUSaRPw9 zBJ~{{z;&T6H2*91Kf0k}hoL352QhND^os8J~>V13R$itHqsKFSn1G$G)#i-0m%Z zoFiNhJ-jNA91s*bAn-fC9VmwF;L@0No 9l_zMR- zk)-?owMT&-I;JNiU0fYXZqs|N0yI4Rc)PzlY>yX6jyMtvE$vj^oF|5{JtyVV^f9jw zQ2K?Cxxba;1GMIp>1|5(Zvn?TPiVk(Ex$GkB)1=vCU$PTfil&Mfv_r4fNNTI);fXS zBL%K$$Soy&Y{$D0N@tq8Ahj)c!NvJT;3W?BTu3dPzed(^+9{)a#lIlVu?gXiZRAse z%UgCn9;)$_pXUZFgP5TI+Q_zXmAd;mHS;MPw=G-Fxv+95!6m>zJ}UvPKIB8vj0wsA zh(!R=%&6f@o8DDGMD*?zO^W89enR_})bvLM=kv^UStvP#P3PDhYdDj9sGmCbc;EUH zd=)S7Gtk9iBlawykB1QK;VIM>0|;g_R!$g713W0JLqRgTV(zV%dK6Mh_^riqyQXn? zGa-`yupbGfpD_%INR8LsEdYgH&s*RxFS&a>3M+h+jY^pWfm)wV& e_4{((&VyA#MI z8#(7uWxy@f>>;|>3K`L9a7Wv96!{6nx-2wxl0WEnHXyrIureg0;2L@Ikbk`(PxD|# zgvI 0Ln0P zdGtc}A~9I`O?($obw>00tQKH~EC){)IKWd#Erzpokj?&jQ=!2cUK1{G5sJ%k6wSUJ zQu1s14@v@OpwXNy;^fz}n3sj?DB!ziknfP2HxaU&A6&l3;#b)1_T0{u&)B3ipJdJG z#Neh{y8Ol(y6MmZjP|&IM26;v8sW8A>imA|COqo1+acH-lHqakX(<-5>AR!tS#3<{ z);dz=YfWzv%F*y?x9Q}RGIq_poC16LRI4cz7OY1+VT1BiHncdhf%42a`w|&8PKTNK z1O~ghb8P)ZzA1(MGB-x!UbFIsQeLNjHDgRu4 9LwOq`wnX9<@y?5$zA8WEwzWFAA7Wd_rHyPCyX##5={6vZwkA_c#Y}Se} zg4=S-E?Hlc2d@l0XDLY;3-Z%*K9*uk05y*2LEeiQ%O(GIjx-kh{WaJy$MlmeZMkpF zj(0-g+}nhwEG34KsK0qr8>f7XVCURsEE~TS3p |FJn#|3Ypk zW;VL7 FY@2$J1Z0R9xkNyu0~Tv48gWhTu${3@lQ|_-LK2 zZp{$!-r)0ea(`Ipdoe?nAWG-sIZnwiaNQy0DF8g3VO=Csp1JcX-g)!dw<~i6eN7B^ z-WwE5w||DR6E@bu`n@g8puc_o(r-x037zf(s=_izsyy}O3_j0blCv{FpIT^PN|Y(i z!iM~-5>6-WyaoL#dk nNuVo+7>xYS zLUUv($dGlzugI$weMeFR-0e{j9>%_=UyU*h7oc#yH;9^3GCVd^CeKhk-&CRa9V9}B zSSj#}a2xw4yR*gkyAq{W`E+o_X7U@<9{!4LporLy{KaAlzPJ6n5InQN^G(J(jfJQK zhz00f^UZT9 }F% zdv$EmOY_ 1BzO_gj *jEwZO<%f4mByeN z!s_RHHU{1rUNB_+)Y0e*)`9BvI_N{;Ml9JMARpHE{zvBd0#y~}x!AJ_S3lVP;1L`l z#~OImXa8#b`^L3pjl&nHx^Nos)F4db>uz<1LpmVF$ Ms zea!gC%Oy|{ks@*lrY+K}k+Mm*Sz6Q0s-^DfV0$>6k-GbWcHlHiP)F=W{zuQ>bm@&D zIq0uaXO3d!8uhF&3UP503DM&Rn#0Dp6_#;xKpZwO;cDlZ_5hDkhw=m!vUDCFpD8&B z>p0Jg#l4(q=YOQ&-o;EXZ05H29YG_5$p$4=ug-UguYU%0vc8 &Je|lv+2RWa&_7gUp8&&`ugx#2^{VwYyt PQW^2 F!tel^mAEyI;Xj3c^%h_V_-W+u>Y*fo!E*epOO44mXsapHCp zcPW;#oBI?|vTG&pG~(r=OUk=tc(AypD jmL^`K4b#j+M+$j518E+E6gR?Ahfv?QOu1u;mJ1Zr3N-S>Q3Rw$MVp{`jpjLqq zD$3SQ5cj?34$atlv5X!q^HSSq8TE<+FFc8BCq@N;vKRd--vi zED}a;cx6Zg^{sFO64JTdneI@^tWu)q{r1L>^d8ftRWP)Gkqrr(Ct9riM{J{wR^&zq za=Mci z9XLmyey xSO{-LuIWd?mwq^&;;bPw=l}V_lc;xi{&7Pf_6YJ!SW@z_a}!&_d2Z#ownI zE%^_)aGWz1|77^bf|lvGFfu=XLWVgP=Q$gZvE42i3fNc=c_QN#+} itKE&?D@pWO~)&Xyk@q^F}LlN%*R t)v3PzCYI{h3?gP<>pWvm zFG_oM@TBHafY&DmSVL%&-u8RO@XfG#c)MCF($iVW=ZYq$bNy$ zVmk{rx?>pUja+IQ4TZJD xYF*Yn?SC%%g65Ia~z`h10p^2b?pG^`PHuSV2S8 zt^AyAYG1DKSvw&YlqG)X+pO6t`<2_w*e5tmYK?MV;LrUacLkCbRrXzwUlz>ok~;0_ z?^76@lpodb+X7VM#^=O;mxPslP4tnv*Z!GS$j_j~f80mihD~tW*+`a%@hH7umGwy| zzm>8hQ=VVJa ^2TkAuJ$JJ_}Y!G8|?X zUP!FvR~!YgSxQXauO6X}P;TVu3ZtkWU9rq^U>x@!a4b!q1L1U7lSZZJ{rv7H^h`Iz z8FSXePrTS~zbGk1P~dMxr}8skY;X8kcY9a|+LtKGy=>X{A)F^aE&CPTPq`@vY7utb z_yJ!@9ri$^dn Uuf5_DVJ34{Xp2d)MjQLlCzja z`Tm`+d2+jdqRmu;?1!QgyM2Rmw!=-koG|j7)xQr`%%0Q;?@jFdLUSILBw3P%Z$*-I zetw_*bs+`p^7_^ywWak#T6M2#!re%+buXk~^IElebnVaIcE)kHTc<5fRo-|x(vLUC zWzF?faZoif`YQcA?0aox!eP(r|HGsaTqW7MlOe2n4X5-HoN4>4_)~vBq0(7E!`bV% z$*aA+(4-fw( wDVLA7I4X5{!lrsEKS)(mb ziHc+$YOMK8DV{2~{@K~-{N>9vb)V#;yKxZ=$&TMqDjHsdu*u-&A8%}+m!ZkD4C+9E z{0u@{k=R~}U5gYsyr{W(^ZV_U@?iw5ybF{mPmIFwd#tFOr*_R9?3RVG2z9^BfP9~) zEhoLxx?}^^m;af2WGbnD4Jrr_;x7BQ%sBgid>v+Tr%yyVZq&x6v-wZ%fca_pxLyx5 z4p^?3&u`*vaOi5I*J#zh0;|&Y-|#fELq}735#@I?s$OxomzQ3FU&|BadznkVz6Q-= zS(jS`rQA3%boratv^q!=3}0ATdYg9x!;ip4PJXaS5=21eB2Xsq`bG4tgM+WoNF~hq z3 wG8lvU&^R;pFMoA=KEyJV1tTzyD; zCQ!!QfHJlP2({q^V(qH3`~6IO;Mm9Y=_Awb_Zg5$;Ew8%X*h)lY1<{|_xQj;o8O2- zQrqRmB-Ubt-5G{|Z1uTc*|o_#_AVR+YtjKRlC{fglkR@3SJDm-%g6~iR~nN-3VEsa zbJOn)pkA ^}O{(4_A6&LxafHSK z8C_E7p}84MpZ4det^nuCa%djlsAt!px`67cAG~S1uMQze<3q3F=)0zz4uest@lzk^ z5i83}zVhd1&!<*b9svc+-tu}oh90`wSRYi#o9T#bm6z`1SVaiegs(Cve{*q=R3DeW z`j}4G52!Kl1Wq txSks9_SUuCm6ttM?5?c`SMn zns8?ss2$L^Gr(W~YWdr+--Rc7ayOr`-4eyBtqdToyrJ)FS7N~Wm1nSB0aOSFB1a)3 z2J4K0>Of)WfQ!Q^2uS9^!jvBXK}i;o10pydW(J+(K&=2fLZ-kPzRYXG$N}VH@#X|T zzTJwEv$Gx6A=g*>5&A$wQdx)mZkNBF*Xb@7=cZPTzj-)4rI+I%UB zp z0cXnpgzPD#TX>t`#Qd+VCb(SxiD6a^MY1EctE)Z%mRXtD_C_wuEUo?l>H+lo|JVj> zi;@UiC8%Oc-z34?%l@QEB7y7zWb1^0q^r4L>2}GeYY Wk@*4YCDahdU^ cg~IJPf*g@eKWz?L_N5qMHXKendTAe>RQnbB;Xd^fS^JC55Y0Ik~&esHq7AEr0| zNJ-e;y~R! EoK$um&Mv-sN zw1Ps&{Nv#C5ND0?9+=E{ql3l6RK3ylvy?aG?Va_k;++aV 5z#g7_n-oSqlNPJntHzBFm(`o^9$d9!8X8 (LOcY3Lu1ztKA8xpW~ F<&}5=Cavlf1Rd zlk~Cy5u^Knh!4OFQ&J8*lg}I7Y1IT!Q66?t+;1On&BdHhehfH2p)}xLxDwX;VDri8 zXb4#}fW#|hnvoJ8TT^K%8$hYOQ{>hiU&~;A5{e8x=em`7%so@q0eWKn0Y7r%#B1>W z#Uz6?)#~#@`iIFL`PWC57Y=a(U9Y9jj%)c=26q{ZV}Y0r1bfH>aPY|G`xl0_ofM&G z5yX~(08G!=1RP;`QTihd&{D7G(hRf(un!g )ypuBzQ#r*8|kZ zx3COCymWcvNM%}L6uThRrpozL{ROjUC~mqut&9qg&3Z3F%af0pPjrth?~I6ar^KvJ zVWa#wPC2NpvLC<_LU8qkz&?mF?c1}OA@9u$74LKl0VDjPYZ9;1@7x2YHABz0EzTUV z$(r5^*C5n{1)D|MYr1o12&W5VhN>OfVtH%xn6Y`uDqN1zt89?gW#IxGdsOLF#tE1= zv)+1)R+4$<-L^b8dJ~0Hbp4r15^J6>xUK_Z$Bc!bXTHfT$Jr?C#?0y|VkB~*BHB`N z{~Gi#@EO^^q*aNN1{6BdR_Bfju>Mh jbFuXKHr?|O)#bM0D?h~O9 zfPZV%yAogn*DCnTj#M+?UzX_vbXh-? O3`kp2Fv0stsT^n6szBm8IjS)=*J>HLeptNWB=O(l!QYDlym4#hroRdQ ztXnUM^PiZ?an<5Q0eNJtS{UbzsgJaJvQy5NoyfmMH 6*CmXSj;*B&(++pW%HlcpeNUaaXWHsQ%L^^{bJx?oEHd6H z=dTTFD`0_H^r?zp>#oH-dgTzS-tWe5WDX*;1bTxpxOmR^o zUOG1HA}ke(18Gsh05;m4zT|{()zca$;MK1gvj43g-zm0V*D$2jYI%&gn+Go;*^XL!hO}>+I;$z|He`hBZ&1-m+%w(B3^=2^Y2+#ev)-Fm$% -d1PdoUx#(ItBA}xj|Ia%w5m3Hbxg9HP`oY^AI7Tyu zy8bHF$OG1?h1nnm@M)0629^w t>TZ;-MhNw1AvrQyPhq8SJII!PE^!- z`stVVrby&QRnyBRs9dczX@q7q%KVnx&8LkQj7fAe*Yr4>zJxub50mYY&9^=BxclpW z90s>+G!w~Ej#g&ToiR}6HV-E *tf4LdvI~nKWiB?m4Eeuk% @oVW`!{8Zbb0d>MGfRM_j=acPK5>l_zBl!33iX}5{NPY>rxT5 zeuy1@Z0T(V&7aw$`BxT)kIu0;q*XEpEFHMmv5j4oS5-v0G128{(IlFI44>gwxZ2jJ zgbr*b(H+9u1i;9~xm5M1E*xWPDZ64`>iuI2b_FbM=}7+rD(`S>@yB8m35#0_i46Xa zU18kU6Ma^AV>UR-wK@ETw6SM6mx{3i&wt=r>*>&2>A2zAT1$=mW4|=?V(UtbLile& z;f*=h8MyAKO^6?hyJ5FO@`V3-KFnL4lX|2)wmaPnSTw%mua1wN53WBP4tjT|ek=P5 zRCoQ^j05`wqJAw8{3$c8nb&YQuA#NmGl0L=8HHfP=HUtjUJK!~;TYU!n7ftIB2>P5 z#8Di3b0> x4zd5r3 zF!q}Tx8|C%(f*evEI~KzGL_Y4)%U0s3)=3#B{pz%joCT19$Nhue9dRXx4MrmxK3bC z7WRw2nT^NG9IQJ)ARP8#^gSmdRkdAH2gkvvsOpr#dvSvq*Q?HF!Y nJU {d{{ywz~~ZXhf>1LdQlxG~c%Kv|Fo>p!+Q zHi4$!gAE?G5euGB6CHb?j;Jq3hXP+lqe}@2;O+hG8P@89hu^kOe+<%WU3Gc+$lTOS z(d%zyWHjEN7nFCiKYcdTKBgKxyR~axFs`G%U+&-e!R7Am+t@JJqaJ&esUzWnF&)J4 z_fppso4x*n0{@8|&yzBxZk$Z^RJExTgW)} Ql6xHRbtniKPx_ zMn~w0*yIwVbtA@WKR4|j$`_OOG!lG4i8H;bum{P!GpCfQC-enQh1~4Q!>h?VNuiu< z uLLtz3|!G2&f`0#^$P)i2{y zKk(@A74<9Z31zv2@@_5#esXCQ=KLMM>ZC#T{k{s-^OK-gIrg(^2UDMG-l6k8U3vw( zK)No^rxWP4%S4wmZREc!Jy0t7>Y(Fo_2Rb;R8=oR>@mlSyr*!=2j;85CJa1N#ptnP zAQ~ukdN Uofj zoHQiZBG?aIE~8WH& BPj5(R1f1PN~zICWO0J!9PJDyrS+_AlX>=(H}^Vw#J6C|MR-86 zIcB~<#%iOtMd`GiX6w{zSMeoeq*f*Y(*9jx9Z2M*Gt)7+U7>+9$OFbtOour2F|7{< z8v8Bv97e@AF(;F(&(5&yn2iY=!+tdm)F_nbT{JQuV?g(VX&;9^`9MbDazpj{?}FNa zF{Vlb)`c_54j$zhW1Yot&9*o2?V}xD^yT}nDK|XoNtH5kr|&sEqUn`XdKtj)-gLMc z_UH$d6Cgm4wWHxWNK6mbMV5X1q5X`HhW9Mh99s8L%azaY(bq7`d5qCUfy{Pw&%Oxs z%jgjKTn z=HgV-uLf8htL6(J^B2#3zMYdIuG0z zQndTxRT`q0_c67qf)lUQ?C0i0caAVvSbGhJUR{SW`9#1cHAS9M?mu+ASN;`{GF~m> zvw~%&z*DO*VfVeL4vbJ2hE~y?^{7BkQKXbI+Z6g&M7y?BR9bAh>r^bS>v3nJ&E4f* z%fsFdii _u_%+BhTi#LAXZjz|8Pv2do&CCp;FeE@;M~fM~_ux4TqdzDnuG3kvJKkdL zph&hmk~x3USY+CLE#l*?9ONF}T=xWd8VR`zIZzE?TS0Iu7a<>i`Ic696Mt>JAu3Jm z$7IRTmmf95b*=UD{ASW0PZYDQ-7R|YdXhaM?7AQLbV>hKGF3KVb7Z_$^Y 7s z7!D57pTCh`{V&WQzH&J7Cj|W$ZMA(LVr_5N?_^s=xq|2otFwAoe$}JmpBF=$cxIYg z-py!-9tuE?viM4=YU?a;@|Yw)z^ABMt?<}q)Q*C`HH+Oc^A(S>v7m%RTj6yRs2b0E z3ehB7+J1NJM2E=j ;=AzMCJw*a=QI()LppD|SpFP~_zc|pv@vgs7tw@y z;vW3W@6o* ^iyvK+ z?>ID0td0UJAa_1NNKUGt7417nqh>3W;H&73p?RVGt^|&UU1L1?>E`tmehScduruG$ z`v-gMZ*%C^=8|Wx_x5Vfvk{f+r}Op56g{0`wr}qV_m~Q1;@i~FQw+_LW0Ta17fqu< z+pbd`hK$RH>qy`(;e%A`kC!R9?Hmm^YI@KO6axSJ#CjIAd{}JCV33&<0t%h!x1J@% z)q~DyXnOomxOGAuAelBazv+lT_w-OETnJx~p=(6C>O4VtTnCw^=z%S%XDx34g&`YR zmpkT=jF32IcABPV1!SVp>x&q6JrkrD`YBoQl9|V_)wic)yo~jcK0E=z+fpxDbX|XV zEH+7>v%xQHEeIB)?UXDBYu3uPUwnoQkPRo!D7VG4yT_%nh7fBR<)Iv<(X9+;wk@yN z!9{D&$48*>O0EaZ5=qvYd-zefst>1azJ6$6zzex4ddGJ1hvCdJsjt*@<~m8 h3pI )5~`3z)s4 zY!lHV _(+S2cpRI@5KnoCDNv_wCpsJM8-0Pe?#;9d+^c{`2@(Z8Q| zQGOO$t*~Ue^s#lL|3mPn{j)aL1pStrSADsdA7xKiw+7EPez~vI>5TVT21d99D$V7E zTMs9pB7v5ky<1{TKfX7zM9O{Tps$pnfe&x1R5U>93dT}X(@LB-*S_4g7vO=3djn(H z+9ZhXarxuERCiMwc^X66W3=Hie^kK9c;tTnJ2QcdRafBm-|kDI&LgHiLRSP94-oj3 z$cUK~c>VHD^J`%D4{Ox>+5pBIu9dA>{|tY*_>@dYZqMHtc+w;J6)Y!-z*qBnGV}N{ zm$@di?2Uo e$M zhCscTjb_Ez&iXyz{b>TnZ>+B~Ra<)WS>Yp^ovi6XtX+ca!){ZKii&Va<(3_Rf2oK~ z*Wouz?fb>!0{ tgNwtyH`Xb6ZEcnAo5@HehjtS+_=mX2mXAjpyR=Pv+@tF={n+(`L*HXQM- z#9Q>FE&b&;7#m?C;ATHPv-l!dA9i8NS-0f&h*L~T6NsgQEYnX^;rVj8Z$t`Z8)Dv$ zT88KrQi3eiqG>Vddf=+Ap>yypgVrlLL}~&5F4m7%M`3vrypzyxHxMQg8XKHHA-*Vu z7mlouh&hxgtj+$~w#)n?4{m-mxK}8bY%nBSdmWj4<_nw3j6GbWp*!S+F4=Q93!TRg zTX{_rFz#@)Mau`Tqv>C~>J36)%rvEw@Y}4=D&|;18NH&Hr4yw+$Q=B9&A@&nNQXFD z3n-~+r;L~R5`CF$EJfE6OL8w5h=`rL)>(+$nwQ&9hx36;4HVpG8vx{*J#PWEZ&` rii;)91x!u*@S3L8c{Np?J0$zdizA=Dm)^?4^#ug?@tDHW!u z4%iyFR~M>w{K2>363ifw;B3Y2HNka#gB;HZwyCqU%yK3n+o!&%;yd%_Ke(_=H(7sL z_~%D{{2ZDe8-} |J>QG%k5TXwizn^HTdz89MtL_riYt@NNHN6+jz%VM9Z=Rc-lJ ziJFp1p{2rRKx}9F^!O@6xTKv?6+_LmXZf4rXeYUD%&nZOKC!R~>B6EuVz@`vIAMxy zaU{+5l0dCMs?(3`yj-+ZlaO(ZbE2{3!U2z%$Wt#vVve5$94rRmyNG6UJ>IHhfAuxH z;i$=Q>>lr{TeNi Rzu+J-UlB8Wyt0YOK zFP$Yg!9?yz_afiMM*MEN?hldqPU4%M`Q;~|r-Oc9$0&)D+=rvrcfZBwh!jTZ7D5rP z0Bk_0VPY0cwuP6w`3>f?3ugpyP`J8j88| $W4+z{@0>mU`TmkP)Q5#vQ@7 zPCQw+U61?lU`;H`RvqQcnb`adSHLlxbn9s4bJYC4)ku@5(6&{e*4Awt#)xKl5vtP{ z-dXcn#i_2mIjjXjIZIZhI4VUI3~}*b)_{q{p0PKS_<9!g>aC7=A!~83idO1#8`RSb zuU2t5TRchG%G`vk0&ouZbMWca1Z;V&w (L%km|#*|gf+5~7Xg*jROn}Xw_C^NDM_6Hyh?`GOP#>;jc GU3z}TQq*E2 zW}seQihH!`)T5ylS?1EdBYu>xwzXefmDI9;Mac%H{C!cgWkm!K*C`0+CN|FXcJofK z!}IQBFPT(NpzX&^#bfK;**9$dw!4QTR&S4$hl`OP=Z75}9yhlmf)7`F4M%z%_b1=J zDPQqL>71<`pYLq$F<;m=EJn*uPPQ-~-d%b>-iqCyo~~8Mvy!$ud@^M=u{P38Ov$+; zI5SYbRko2DY}@qm(3EpfS7{0UbYc5WS>bVBy{%MnhIVSnLCXo~Q@ *IvL8BS7%~E&^u?J)5g3;U=O%+uP}64bidXz zIU&B|BrqY`e-||l>lWCtg0xb}hST 9O-(owrbs22~FAIhVd0%g6*P^qaj#xyecj zAHAmjd)D2o Y$(t?V5{Z82hOlP)7WxN9ZB5_Q;K$u{B%9jwLuO{tU z?hdskq>17bwofW`b>z4Y%Is*?myoEj!tp^Q*ix)kxS35Z4I+pFyS+=hInhx2jHZ`M zj8!xZ`|s^~9V4m;8g=e--;WU3xG*Nzy$=)#)~mSKRY&@A-mI0AkB8dmLw6X(P+7oW zDzL%obef^H10e=g#WXm2C{B zMT=z$B7v{cYxi(J*`Vnc7*{IAFWdydbn* TV&W*Bp=vDitN55SB7J3>kV@?9(WNXlEG8fjiTljnmF0h z*_O=HuYmtfAvs5ywOE9|I@KQ~^z#SFmFHIkrBlW!ws7fnJcBX#uEsN_;3^a;a-+co zAS=%aDyNJSLM*M(090_D6Q-R?@t92Oy5}#MwEbIL4%qdJhsYE;avKcRkURnjD$j?5 zfSs@~@Zd+gl8wZW%e)B+cH(}^Eun6PQ_qS3FeaeVKpN$K5+w#W7*jyg6Un{ap72yt zEeb*HQ%yZjjQv+Coam|EF@W(HSZu?tIwp7mENC+VfLZa-Y?w&ym1c;gooOGre^OdR zSxAd18bI?!rRmRXI!sbwyBP8pmF5HhD{$%YT->%`18x6>aibt+P692=LL0ORt#LZ5 zl_Qf?fOO+n2=Qm(pk4@_eiR)GfOD;x_>n#S%&H40h$XMup1>ZrOIU&tZW~~-trTB{ z+t=c8i1vGhLzcPiA zUx1$}7=dL^&;_oya}+rIGZTgkeg_L|$h&kD9hyLv_-nBN_qlG)#`w{M9GN%$YGTcH zG2>yrZ6i-fiBL(rCk1T-fMB*1DJBBJ%KNXpYbHN%GWN?H0F+vL#cU|nl2r@)t7r}` z?~B~F0Yhzn!CZDw>V~_=Zg0qCX1G0SdoQ@&1MznJ@#W<}OFQaOg61jXeKVqQqI`6` zyvqA_fM~Ktj!bmVUsa`p*$7fgw{IK#slD${+LP|Rpm;JADD{{4GvU9)AN?ghs{`0B zLdiTo#qYB_+3x1Nj+YB!sX2{Jxz2y@AEAb_uk#bA{=X!8s^(wPUb4spv2YSlQ|NF@ zCW9SoWx#a1nhuouFCLPfc&J_X1FeyX8v6V$40iAAk+{DBZC4vVsV$ege9e=wpR-Z< z>US>Kkz6zYKdpDg@{9eUpX}!&{}k=7yq)f!Vt@T9_LFT`z%I32{p2NonFF%9^ht#= zjbL_va*+0K9Q mU6>$>l!VI?!o^!}GEHm(+u1eGodot9()>Cs>(_(%OAy zCnOQ}ur`9W!6tG8ybT1a?eVglgzqsC8})kl$cCJ>2R~s1y=wBsoV>!!zp7V7dJSZc z$&vF)Y#pvYUp^#N)vg5wu}=-*{rJe;)-SB41t%%01IOw95`~0l`E^VI0D^EAP&-#+ ze;wlQeDVD97!ktMeLL&<=I{u9!59AT`$*-ZOwI(m3ZHGXY6jVTiGWUS5PVa>!5Y&% zS$mvD-JZj92#@+RsbaZgRuk#qA9EE3BPdq3_3Y9FscAhz!Ho6y&o43WJB4K|tY8k| zsNG?#mM+g4J$CG->-Bn)2xh-4@Rxh194xXbQxt``q}_2^rTUhkO|xG|k0hWlthasl zLe(;X5xE$<{|0dJOXu~BZ7}gq-Kv&rm^@i(WdRborJLv#pFpN$nWqLDXnc3Nl7DV} z<>!X~c+w&66|45D>XrFD 76fyTw9#|thY;TwR8@ra?yI;kIx$nWsDKfkHMc1N|d}H^6{Z? zurdxcp@^KWk$)u6L!9J1)N{gKN9H{)rePXElx$s+wsYM~c{3`1Dlg~iEMK)yOml!I z6Ifaq##wbig^GH`@`}GsZ=Ld?Om=N*qZvk_m&RvT>VAM%CkG?cGh+?TZt;CAs`4 ax`G`@^6iHf*!4&j|*dChk;=J@uQgX^hQDkgtjHu1qX?@*CkWhTN4`u!u8A z=GY3-p(U%($TpYHGiQmNuFF!Z(aHJ*^|hq+3tP~jz$5_W=zSb)Uu$}DV>eP+Tlnu4 zsGyg;C7&*p?Xk$rzi+r9g3V8-^5s^L&z8X%N_+?8Dbp)DXh o1c&eVV(pf-uS91 z^9kz8WVb5Agpus?qP89+;7McA2RN3#xhUkxB0*;mgR%#KIPOnL7gn4X__H4V%9J{D z$n;kqWO71AAXKq^23|Lx^4Fc)I7Y%b!>VH|4O{qdR6zEjD|)jHU@P_7=(Fp51~nUU zSH5^ozoCh?kHn(IE>7O(l#NpbbhL&aq_ckQHtgzyv*k-M`iWGrAKI-a1;Y5lrAXMF z5T?M~#ytAl0 uOLYji-dO4A;#REng& za@;P(;Er?2RLq!l35AXG!+A_1aC?*Gk5wi@3 $)vB lK?JI#{YyIk?3guOyNL6_V9>PA>ItIMI|{B4b(kRkE^_u$-J(}0d@Ra0 zF>>7AHXUlYhrQ^ju@%@#H1PS2L^x~O@5BhMOnSF`N>ICc%8I#(ac(vvES)MD8#UVs zKcPw5^U~$HQf$o=gInd@dBPebeH1(p2do}+aC0;MK$qW0VnsTz2DT ICUa%p3@x<$KEDGXB?d )Bk7WSmgn!vri93ab%Gg(=py1QT>{Dt|}HZ)8l6iW#m`2kR>))y<-in+azP z?R9ydpDI#DCPm_UwL-7__gKps{Y0?;72^~J0+5xO)R2u64grF#_k(wj;B~dXR_p!` zTXpEd!)TWSuSfKgK|o-G*G9lgdmuBQHSpKxi>C#LeT~oIgj_fsc(;NmjxIkqzeQ6o zuYR$LU!pS3NFb`K-&a&)2gJ1!Vnb2$Tqx1y7bJ_=@+V9PL8G>vM s1bB4>LpdwIaS|!szpKq zx0Mcw$>&cEGGFkLth-NK(P3eEncYy|Z{antJ{wn~5!-~*5VgsE1T@L&d%PWYJl*NC zm>@&&*K{w?gD%n@xY)bb?5Lk8gf!#uOZ-qj`)V)ICdL3&;dVNwMg2&1 OJJRa zOVd2Aarbr<_A-jUa9bSx7sVLVkNZl>vTrH4HZ>y-0Rj*{P)bx%>qC7g@?!|qjp1}W ztGx@ pkAz<1OoTJRI+yaP3Udo^ % z8z+Rh?Ob#?G6{9$$Q)o-*SghqCi*zZ()fRiU`nu9wWF_!BY8Y1N2kx#3<&G-R2;z?|q9L0z z{D5`Y%Fy#ej0*pdNor9CeQG6^T2aH0k!~Pa!2IdwW$TKbBFkxh4`WILFduAQA;p{h zBW5g$`${}wFF1+Y!;Lop4&Gg_Y06ot#N5K@&u)#F0%X3w3ch$Q+<}Dh4egFZr}t%? zjKlUsQ#d|*EWh(?qynGgylmWHuNMs(xp=ILzZ9NF^c=4kzbKJH^^3&@#QN@g6N*OI z4U4n{+K^k|C~;M5L~0u;9>}jU95~NcKU?=Xl%4n0S#jcg3%)Waq95PALBR3tm;w99 zR@1mTg?=LOzH}+$;Hc_Fx;`W@uEg>yy+bkrBk<}Z!Mf7a*51$c8C@vmO8(7ru_b98 z?#*-+w~Q#XH>;dbo1`1zlk_vN+iY 0eW6{rA? zTBe?9_Fr6H2wSAKdiW009Gz}w%C}Z+vXdtqj==V{h`4ydw2nu>vlT5UHq$m)K#o#e zr*Wn*EhbPhf3v3%qy@}JkD+La0+%||!(=a1T-j-|jq-z?7;&@4%I@UOT%#i= 9r$8lchgwYw{m0mrd9aq>*&e4>x-$Y`w#>I8ryj&G;+YA<-7Y;HZO4u^OEv!v#jVMPNO_gwqXD?2L zR4`;^CyNFt&o$e>vv4vmX%o+9ri=j9M6yk=`QfcG@qSLa)97zb4W0tXHyJh&I )L9@jFi>(>-e7Oz_sqD$HBnA!;pHkfIul4`+FZLBBoW|M z2a6@V(vFuKhI wq`7KR|k@USi28egi70^X#9<+q7 zm?=l VoNQy5%m)4cD$HJFV0)5#gzr;m4J?sc) z{@wILAH(hxD1IlHcLVj~spwQSLxIh`9J52YB})?;*7Q5+*0m|maOf^J=B!VEHyW*S zJz+I9iVL;uOb96QQ!lTrog}#VPs(Wp2QxltItelDNoQQ&4llM&o4~vH^10c0a~CRY zD~Q-8Q_|f|5Dq51)DK^b*N8+|Y2~41e)OWZf?txJWlnf*(1D@iuatvX|1r=RUv1>R zQhV2l0ew|JR#6*ma_<&W+h9!G*}P(4hUM_vCiCY&% `Yq#s|+H)TEN0?+8 zcXh+r8rIGhfhKkQbTDmld1L!uUj^!xX&s@uEme*a@g28OqN2@D+bHaDA=NoFXdzfo z1HJMzir^Ead5and@3Zg87>)Ed={=3xA+9W1>VJg*e=hoy2dmpiz(7D;qd`ER{u+KA zLGP@9j!y&cCv_d$JZ>CMJ@ZHC^^8-@Y$+VTFy4e@&Bw&~#LF^=PO9bSgan16CY+C+ z6{s*1Qkox#&A(H3CGYJy9<~Y0)}X7(Mba`!cWW3ob48i!CmknL>KH$Gl4==E(oq}I z=cca>@~uz&V0*l8(4ddTSvh!-1Q(zWG(Id~`cSV! 8r&3DUGh@jZqR;_R18P3j7%DB1P`=%_A7W`Iqj~#b=aqakn*^jI zhEW4eRdRL2v^q3sX+u}3zigoP*1b!Lh4DsqF_gDT0L7A>E>JZ29=Mt=GM@BHwlg1N zD{iuH)kLssJVz8{BS?jWP^C{106e7j?c%C5o}_&lX6?t$)wh4+E+E6b*&U QHDAi&1K-C Js6%U!)wD6a->>DlBn4e7Bcb}`lXI`&(3;g3Q| z6v~IfYV+j+M>tw#V@zzlI+Wu=L9Wot&kixJ(q`S?O*`Ssm7b6em)eucmYsNqYAN%X z1;Qx16^32PJAXx2HK`OO**c{hgz-pB$ghnallg3 OyEk|26Xr*fxXegxE793b$b50R*N-gi%rtNjaD%eZPV(HH zWe^V`za1N~b)c?Qea^{^-$$VijV#*}aaCV33zp%~zMzR7_d50M?aui7A&z$VXHT8zP5i zik#8g2$dnG0JLn$?@p};g%L|m6=IDN9NQAX`1V>QHN;=gT$WbV5NSOiz<;HBTVB?w z$2_y=y6!r ? z2~YWEu$fh)D4j5hlwR &noKLQKL^MAp)3#(IDd6GW(E#GV`Y$oxsB=1ey3Jb&vxM@hBs;D z5!rRIPU&p!h9Er_Ueqp?==a%>HiK=MoH46XwOl?axo=*##MA|It~f%uCO$BO#P9e> zj=cDmcYfSErg6(Nv93qxfm$cM1`N_o-lquaf*!Q>n!ZITCt$9KN%hZ(Z*_)^-VIfB zq~nS2bZYBrgX)1z?lXJ1ppl6p?$6E<&|8j4g^Gxe-=o_MlWWYBtq2$=^IzZI8?Z(i zF58>cZ*7VPr=#kx@kc+-)l`y4-enBE!;~K#k!nm~Z9CKD;W BZ<_#2I;NN)C+kJR;XY19MH zc(Zf}Q# 9v!hSeGUv-m z^iS88;a08czpO2bX5y@@Ov03$ftQy=9epETikyZP