diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java index dc4ecb222..441bd62ce 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java @@ -32,6 +32,22 @@ public AttractiveTermPr1978(ComponentEosInterface component) { } } + /** {@inheritDoc} */ + @Override + public void setm(double val) { + this.m = val; + neqsim.MathLib.nonLinearSolver.newtonRhapson solve = + new neqsim.MathLib.nonLinearSolver.newtonRhapson(); + solve.setOrder(2); + double[] acentricConstants = {-0.26992, 1.54226, (0.37464 - this.m)}; + if (this.m > 0.49) { + solve.setOrder(3); + acentricConstants = new double[] {0.01666, -0.164423, 1.48503, (0.379642 - this.m)}; + } + solve.setConstants(acentricConstants); + getComponent().setAcentricFactor(solve.solve(0.2)); + } + /** {@inheritDoc} */ @Override public AttractiveTermPr1978 clone() { diff --git a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java index aefbe5a60..5c987bcc3 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java @@ -1,16 +1,12 @@ package neqsim.thermo.system; -import neqsim.thermo.phase.PhaseHydrate; -import neqsim.thermo.phase.PhasePrEos; -import neqsim.thermo.phase.PhasePureComponentSolid; - /** * 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 { +public class SystemPrEos1978 extends SystemPrEos { private static final long serialVersionUID = 1000; /** @@ -45,29 +41,8 @@ public SystemPrEos1978(double T, double P) { */ public SystemPrEos1978(double T, double P, boolean checkForSolids) { super(T, P, checkForSolids); - attractiveTermNumber = 13; - modelName = "PR1978-EOS"; - - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - - if (solidPhaseCheck) { - setNumberOfPhases(5); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } - - if (hydrateCheck) { - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + attractiveTermNumber = 6; + modelName = "PR78-EoS"; } /** {@inheritDoc} */ diff --git a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java index 0f7dfd9bd..eda49eb6f 100644 --- a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java +++ b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java @@ -164,11 +164,17 @@ public static SystemInterface read(String inputFile) { fluid = new neqsim.thermo.system.SystemSrkEos(288.15, ThermodynamicConstantsInterface.referencePressure); } else if (EOS.contains("PR")) { + String corr = br.readLine().replace("/", ""); + if (corr.equals("PRCORR")) { + fluid = new neqsim.thermo.system.SystemPrEos1978(288.15, + ThermodynamicConstantsInterface.referencePressure); + } else { + fluid = new neqsim.thermo.system.SystemPrEos(288.15, + ThermodynamicConstantsInterface.referencePressure); + } + } else { fluid = new neqsim.thermo.system.SystemPrEos(288.15, ThermodynamicConstantsInterface.referencePressure); - } else if (EOS.contains("PR78")) { - fluid = new neqsim.thermo.system.SystemPrEos1978(288.15, - ThermodynamicConstantsInterface.referencePressure); } } if (st.equals("CNAMES")) {