diff --git a/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java b/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java index f7f505971..28c1a7662 100644 --- a/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java +++ b/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java @@ -132,6 +132,15 @@ public double getBinaryInteractionParameter(int i, int j) { return intparam[i][j]; } + @Override + public double[][] getBinaryInteractionParameters() { + return intparam; + } + + public void prettyPrintKij(){ + + } + @Override public double getBinaryInteractionParameterT1(int i, int j) { if (i == j) { diff --git a/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java b/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java index 781396b92..086949a17 100644 --- a/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java +++ b/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java @@ -275,6 +275,7 @@ public double calcAiT(int compNumb, PhaseInterface phase, double temperature, do */ public PhaseInterface getGEPhase(); + public double[][] getBinaryInteractionParameters(); // double calcA2(PhaseInterface phase, double temperature, double pressure, int // numbcomp); // double calcB2(PhaseInterface phase, double temperature, double pressure, int diff --git a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java index 009145fc2..0f7dfd9bd 100644 --- a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java +++ b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java @@ -4,6 +4,8 @@ import java.io.File; import java.io.FileReader; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; @@ -250,44 +252,30 @@ public static SystemInterface read(String inputFile) { } } if (st.equals("BIC")) { - int numb = 0; - // kij = new double[ZI.size()][ZI.size()]; + int addedComps = 0; kij = new double[names.size()][names.size()]; + int lengthLastLine = 0; + List list = new ArrayList(); while ((st = br.readLine().replace("/", "")) != null) { - numb++; if (st.startsWith("--") || st.isEmpty()) { break; } - - // String[] arr = st.replace(" ","").split(" "); String[] arr = st.split(" "); - if (arr.length == 1) { - break; + List templist = new ArrayList(Arrays.asList(arr)); + list.addAll(templist); + list.removeAll(Arrays.asList("", null)); + if (lengthLastLine >= list.size()) { + continue; } - - // List list = Arrays.asList(arr); - for (int i = 0; i < arr.length - 1; i++) { - BIC.add(Double.parseDouble(arr[i + 1])); - kij[numb][i] = Double.parseDouble(arr[i + 1]); - kij[i][numb] = kij[numb][i]; - // kij[numb-1][i] = Double.parseDouble(arr[i+1]); - // kij[i][numb-1] = kij[numb-1][i] ; + lengthLastLine = list.size(); + for (int i = 0; i < list.size(); i++) { + BIC.add(Double.parseDouble(list.get(i))); + kij[i][addedComps + 1] = Double.parseDouble(list.get(i)); + kij[addedComps + 1][i] = kij[i][addedComps + 1]; } - // numb++; - Double.parseDouble(arr[1]); - // System.out.println(list.size()); - // System.out.println(st); - // BIC.add(Double.parseDouble(st)); + addedComps++; + list.clear(); } - - /* - * numb =0; - * - * for (int i = 0; i < names.size(); i++) { for (int j = i; j < names.size(); j++) { - * if(i==j) continue; //System.out.println("ij " + i + " " + j+ " " + BIC.get(numb)); - * System.out.println("ij " + i + " " + j+ " " + kij[i][j] ); //kij[i][j] = BIC.get(numb); - * //kij[j][i] = kij[i][j]; numb++; } } - */ } } for (int counter = 0; counter < names.size(); counter++) { diff --git a/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java b/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java index 590f80893..9c7f0f0b4 100644 --- a/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java +++ b/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java @@ -6,6 +6,7 @@ * A utility class for pretty printing a 2D string table. */ public class TablePrinter implements Serializable { + /** * Prints a 2D string table in a formatted and visually appealing way. * @@ -68,7 +69,7 @@ private static void printHorizontalLine(int[] columnWidths) { /** * Prints a row of the table with appropriate padding based on column widths. * - * @param row The row of data to be printed. + * @param row The row of data to be printed. * @param columnWidths An array containing the maximum width of each column. */ private static void printRow(String[] row, int[] columnWidths) { @@ -84,4 +85,35 @@ private static void printRow(String[] row, int[] columnWidths) { } System.out.println(); } -} \ No newline at end of file + + /** + * Prints a 2D string table in a formatted and visually appealing way. + * + * @param table The 2D double table to be printed. + */ + public static void printTable(double[][] table) { + printTable(convertDoubleToString(table)); + } + + /** + * Returns a 2D string table in a formatted and visually appealing way. + * + * @param doubleArray The 2D double table to be printed. + */ + public static String[][] convertDoubleToString(double[][] doubleArray) { + // Initialize the 2D String array with the same dimensions as the double array + String[][] stringArray = new String[doubleArray.length][]; + + for (int i = 0; i < doubleArray.length; i++) { + // Initialize the inner array with the same length as the corresponding double array + stringArray[i] = new String[doubleArray[i].length]; + + for (int j = 0; j < doubleArray[i].length; j++) { + // Convert each double value to string and store it + stringArray[i][j] = String.valueOf(doubleArray[i][j]); + } + } + + return stringArray; + } +} diff --git a/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java b/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java index e4048296a..8716c19e8 100644 --- a/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java +++ b/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java @@ -63,6 +63,11 @@ void testReadAndAddFluids2() throws IOException { testSystem.setPressure(100.0, "bara"); testSystem.setTemperature(25.0, "C"); testOps.TPflash(); + + // neqsim.thermo.util.readwrite.TablePrinter.printTable((((PhaseEos + // )testSystem.getPhase(0)).getMixingRule().getBinaryInteractionParameters())); + + } @Test