Skip to content

Commit

Permalink
Testelectrolytes eos (#720)
Browse files Browse the repository at this point in the history
* initial work

* added more implementations

* added methods for stream and saturator

* added test for recalculation to process module

* added calc check heater/cooler

* style

* Update Heater.java

* revert

* Update Stream.java

* added check for null

* update

* fixed database parameters

* fixed db table

* added test and fixed bugs

* added test for recalc for mxer

* add test

* fixed bug

* set private

* update

* update

* use solved property remove isUpdated

* testelectrolyteEos

* added updates to test

* remove logging

* fixed error

* fix error

* fix

* fix

---------

Co-authored-by: Åsmund Våge Fannemel <34712686+asmfstatoil@users.noreply.github.com>
  • Loading branch information
EvenSol and asmfstatoil authored Jun 4, 2023
1 parent 94f89f7 commit af42c9c
Show file tree
Hide file tree
Showing 6 changed files with 325 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ public interface ProcessEquipmentInterface extends SimulationInterface {
* <p>
* Check if process module needs recalculating.
* </p>
*
* @return true or false
*
*/
public default boolean needRecalculation() {
return true;
Expand Down
127 changes: 70 additions & 57 deletions src/main/java/neqsim/thermo/ThermodynamicModelTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
public class ThermodynamicModelTest implements ThermodynamicConstantsInterface {
private static final long serialVersionUID = 1000;
SystemInterface system;
private double maxError = 1e-10;
static Logger logger = LogManager.getLogger(ThermodynamicModelTest.class);

/**
Expand Down Expand Up @@ -76,7 +77,7 @@ public void runTest() {
* @return a boolean
*/
public boolean checkFugacityCoefficients() {
double temp1 = 0 ;
double temp1 = 0;
for (int j = 0; j < system.getNumberOfPhases(); j++) {
for (int i = 0; i < system.getPhase(j).getNumberOfComponents(); i++) {
temp1 += system.getPhase(j).getComponents()[i].getNumberOfMolesInPhase()
Expand All @@ -87,8 +88,8 @@ public boolean checkFugacityCoefficients() {
temp1 -= system.getPhase(j).getGresTP() / (R * system.getTemperature());
}
logger.info("Testing fugacity coefficients...................");
//logger.info("Total fug gas : " + temp1);
//logger.info("Total fug liq : " + temp2);
// logger.info("Total fug gas : " + temp1);
// logger.info("Total fug liq : " + temp2);
// logger.info("Testing fugacity coefficients...................");
// logger.info("Total fug gas : " + temp1);
// logger.info("Total fug liq : " + temp2);
Expand All @@ -99,11 +100,11 @@ public boolean checkFugacityCoefficients() {
// temp1 -= system.getPhase(j).getGresTP() / (R * system.getTemperature());
// temp2 -= system.getPhases()[1].getGresTP() / (R * system.getTemperature());
double sum = Math.abs(temp1);
//logger.info("Diffference fug gas : " + temp1);
//logger.info("Difference fug liq : " + temp2);
// logger.info("Diffference fug gas : " + temp1);
// logger.info("Difference fug liq : " + temp2);
return Math.abs(sum) < 1e-10;
// logger.info("Diffference fug gas : " + temp1);
// logger.info("Difference fug liq : " + temp2);
return Math.abs(sum) < maxError;
}

/**
Expand All @@ -118,35 +119,35 @@ public boolean checkFugacityCoefficientsDn() {
double temp1 = 0;
double sum = 0;
for (int k = 0; k < system.getNumberOfPhases(); k++) {
for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) {
temp1 = 0;
//temp2 = 0;
// temp1 +=
// Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient());
// temp2 +=
// Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient());
for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) {
temp1 += system.getPhase(k).getComponents()[i].getNumberOfMolesInPhase()
* system.getPhase(k).getComponents()[i].getdfugdn(j);
//temp2 += system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()
//* system.getPhases()[1].getComponents()[i].getdfugdn(j);
// logger.info("fug " +
// system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()*system.getPhases()[1].getComponents()[i].getdfugdn(j));
for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) {
temp1 = 0;
// temp2 = 0;
// temp1 +=
// Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient());
// temp2 +=
// Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient());
for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) {
temp1 += system.getPhase(k).getComponents()[i].getNumberOfMolesInPhase()
* system.getPhase(k).getComponents()[i].getdfugdn(j);
// temp2 += system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()
// * system.getPhases()[1].getComponents()[i].getdfugdn(j);
// logger.info("fug " +
// system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()*system.getPhases()[1].getComponents()[i].getdfugdn(j));
}


// logger.info("test fugdn gas : " + j + " " + temp1 + " name " +
// system.getPhases()[0].getComponents()[j].getComponentName());
// logger.info("test fugdn liq : " + j + " " + temp2);
}


// logger.info("test fugdn gas : " + j + " " + temp1 + " name " +
// system.getPhases()[0].getComponents()[j].getComponentName());
// logger.info("test fugdn liq : " + j + " " + temp2);
}
}
sum += Math.abs(temp1) ;
logger.info("Testing composition derivatives of fugacity coefficients...................");
sum += Math.abs(temp1);
logger.info("Testing composition derivatives of fugacity coefficients...................");
logger.info("Diffference : " + sum);
// logger.info("Testing composition derivatives of fugacity
// coefficients...................");
// logger.info("Difference : " + sum);
return Math.abs(sum) < 1e-10;
return Math.abs(sum) < maxError;
}

/**
Expand All @@ -162,34 +163,35 @@ public boolean checkFugacityCoefficientsDn2() {
double sum = 0;

for (int k = 0; k < system.getNumberOfPhases(); k++) {
for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) {
temp1 = 0;
//temp2 = 0;
// temp1 +=
// Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient());
// temp2 +=
// Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient());
for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) {
temp1 += system.getPhase(k).getComponents()[i].getdfugdn(j)
- system.getPhase(k).getComponents()[j].getdfugdn(i);
//temp2 += system.getPhases()[1].getComponents()[i].getdfugdn(j)
// - system.getPhases()[1].getComponents()[j].getdfugdn(i);
for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) {
temp1 = 0;
// temp2 = 0;
// temp1 +=
// Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient());
// temp2 +=
// Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient());
for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) {
temp1 += system.getPhase(k).getComponents()[i].getdfugdn(j)
- system.getPhase(k).getComponents()[j].getdfugdn(i);
// temp2 += system.getPhases()[1].getComponents()[i].getdfugdn(j)
// - system.getPhases()[1].getComponents()[j].getdfugdn(i);
}
// sum += Math.abs(temp1) + Math.abs(temp2);
// logger.info("test fugdn gas : " + j + " " + temp1);
// logger.info("test fugdn liq : " + j + " " + temp2);
}
//sum += Math.abs(temp1) + Math.abs(temp2);
// logger.info("test fugdn gas : " + j + " " + temp1);
// logger.info("test fugdn liq : " + j + " " + temp2);

// logger.info("Testing composition derivatives2 of fugacity
// coefficients...................");
// logger.info("Diffference : " + sum);
// logger.info("Testing composition derivatives2 of fugacity
// coefficients...................");
// logger.info("Difference : " + sum);
}

//logger.info("Testing composition derivatives2 of fugacity coefficients...................");
//logger.info("Diffference : " + sum);
// logger.info("Testing composition derivatives2 of fugacity
// coefficients...................");
// logger.info("Difference : " + sum);
}
sum += Math.abs(temp1) ;
logger.info("Testing composition derivatives2 of fugacity coefficients...................");
logger.info("Diffference : " + sum);
return Math.abs(sum) < 1e-10;
sum += Math.abs(temp1);
logger.info("Testing composition derivatives2 of fugacity coefficients...................");
logger.info("Diffference : " + sum);
return Math.abs(sum) < maxError;
}

/**
Expand Down Expand Up @@ -222,7 +224,7 @@ public boolean checkFugacityCoefficientsDP() {
// coefficients...................");
// logger.info("Error : " + sum);

return Math.abs(sum) < 1e-10;
return Math.abs(sum) < maxError;
}

/**
Expand Down Expand Up @@ -255,7 +257,7 @@ public boolean checkFugacityCoefficientsDT() {
// logger.info("Testing temperature derivatives of fugacity
// coefficients...................");
// logger.info("Error : " + sum);
return Math.abs(sum) < 1e-10;
return Math.abs(sum) < maxError;
}

/**
Expand Down Expand Up @@ -420,4 +422,15 @@ public boolean checkNumerically() {
}
return true;
}

/**
* <p>
*
* @param maxErr Maximum error before test will report failed Set maximum allowed error in model
* check
* </p>
*/
public void setMaxError(double maxErr) {
this.maxError = maxErr;
}
}
10 changes: 10 additions & 0 deletions src/main/java/neqsim/thermo/system/SystemInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,16 @@ public default boolean IsPhase(int i) {
*/
public PhaseInterface getPhase(String phaseTypeName);

/**
* <p>
* getPhase.
* </p>
*
* @param pt a {@link neqsim.thermo.phase.PhaseType} object
* @return a {@link neqsim.thermo.phase.PhaseInterface} object
*/
public PhaseInterface getPhase(PhaseType pt);

/**
* <p>
* getPhaseIndexOfPhase.
Expand Down
12 changes: 8 additions & 4 deletions src/main/java/neqsim/thermo/system/SystemThermo.java
Original file line number Diff line number Diff line change
Expand Up @@ -2337,10 +2337,7 @@ public final PhaseInterface getPhase(int i) {
return phaseArray[phaseIndex[i]];
}

/** {@inheritDoc} */
@Override
public PhaseInterface getPhase(String phaseTypeName) {
PhaseType pt = PhaseType.byDesc(phaseTypeName);
public PhaseInterface getPhase(PhaseType pt) {
if (!this.hasPhaseType(pt)) {
throw new RuntimeException("Phase with phase type " + pt + " not found.");
}
Expand All @@ -2353,6 +2350,13 @@ public PhaseInterface getPhase(String phaseTypeName) {
return null;
}

/** {@inheritDoc} */
@Override
public PhaseInterface getPhase(String phaseTypeName) {
PhaseType pt = PhaseType.byDesc(phaseTypeName);
return getPhase(pt);
}

/** {@inheritDoc} */
@Override
public PhaseInterface getPhaseOfType(String phaseTypeName) {
Expand Down
Loading

0 comments on commit af42c9c

Please sign in to comment.