Esempio n. 1
0
        public void testTPflash()
        {
            SystemInterface fluid1 = new SystemSrkEos(298.15, 10.0);

            fluid1.addComponent("methane", 1.0, "kg/sec");
            fluid1.addComponent("n-heptane", 1.0, "kg/sec");
            fluid1.addComponent("water", 1.0, "kg/sec");
            fluid1.setMixingRule(2);
            fluid1.setMultiPhaseCheck(true);
            ThermodynamicOperations ops = new ThermodynamicOperations(fluid1);

            ops.TPflash();

            fluid1.display();
        }
Esempio n. 2
0
        public void runBenchmark()
        {
            SystemInterface         testSystem = new SystemSrkEos(303.15, 35.01325);
            ThermodynamicOperations testOps    = new ThermodynamicOperations(testSystem);

            testSystem.addComponent("nitrogen", 0.0028941);
            testSystem.addComponent("CO2", 0.054069291);
            testSystem.addComponent("methane", 0.730570915);
            testSystem.addComponent("ethane", 0.109004002);
            testSystem.addComponent("propane", 0.061518891);
            testSystem.addComponent("n-butane", 0.0164998);
            testSystem.addComponent("i-butane", 0.006585);
            testSystem.addComponent("n-pentane", 0.005953);
            testSystem.addComponent("i-pentane", 0.0040184);
            testSystem.addTBPfraction("C6", 0.6178399, 86.17801 / 1000.0, 0.6639999);
            testSystem.addComponent("water", 0.27082);

            testSystem.createDatabase(true);
            testSystem.setMixingRule(2);
            testSystem.setMultiPhaseCheck(true);

            Console.Write("start benchmark TPflash......");

            testSystem.init(0);
            Stopwatch sw = new Stopwatch();

            sw.Start();
            testOps.TPflash();
            for (int i = 0; i < 5000; i++)
            {
                testOps.TPflash();
            }

            sw.Stop();

            Console.WriteLine("Elapsed={0}", sw.Elapsed);
        }
Esempio n. 3
0
        public void testPropertyCalc()
        {
            SystemInterface fluid = new SystemSrkEos(298.15, 10.0);

            fluid.addComponent("water", 0.01);
            fluid.addComponent("nitrogen", 0.02);
            fluid.addComponent("CO2", 0.03);
            fluid.addComponent("H2S", 0.01);
            fluid.addComponent("methane", 0.80);
            fluid.addComponent("ethane", 0.04);
            fluid.addComponent("propane", 0.03);
            fluid.addComponent("i-butane", 0.02);
            fluid.addComponent("n-butane", 0.01);
            fluid.addComponent("i-pentane", 0.01);
            fluid.addComponent("n-pentane", 0.01);
            fluid.addComponent("n-hexane", 0.01);
            fluid.createDatabase(true);
            fluid.setMixingRule(2);
            fluid.useVolumeCorrection(true);
            fluid.setMultiPhaseCheck(true);
            fluid.setTemperature(45.0, "C");
            fluid.setPressure(10.0, "bara");
            ThermodynamicOperations ops = new ThermodynamicOperations(fluid);

            ops.TPflash();

            int k = 0;

            double[] fluidProperties = new double[67];
            fluidProperties[k++] = (double)fluid.getNumberOfPhases(); // Mix Number of Phases
            fluidProperties[k++] = fluid.getPressure("Pa");           // Mix Pressure [Pa]
            fluidProperties[k++] = fluid.getTemperature("K");         // Mix Temperature [K]
            fluidProperties[k++] = fluid.getMoleFractionsSum() * 100; // Mix Mole Percent
            fluidProperties[k++] = 100.0;                             // Mix Weight Percent
            fluidProperties[k++] = 1.0 / fluid.getDensity("mol/m3");  // Mix Molar Volume [m3/mol]
            fluidProperties[k++] = 100.0;                             // Mix Volume Percent
            fluidProperties[k++] = fluid.getDensity("kg/m3");         // Mix Density [kg/m3]
            fluidProperties[k++] = fluid.getZ();                      // Mix Z Factor
            fluidProperties[k++] = fluid.getMolarMass() * 1000;       // Mix Molecular Weight [g/mol]
            // fluidProperties[k++] = fluid.getEnthalpy()/fluid.getNumberOfMoles(); //
            // Mix Enthalpy [J/mol]
            fluidProperties[k++] = fluid.getEnthalpy("J/mol");
            // fluidProperties[k++] = fluid.getEntropy()/fluid.getNumberOfMoles(); // Mix
            // Entropy [J/molK]
            fluidProperties[k++] = fluid.getEntropy("J/molK");
            fluidProperties[k++] = fluid.getCp("J/molK");                // Mix Heat Capacity-Cp [J/molK]
            fluidProperties[k++] = fluid.getCv("J/molK");                // Mix Heat Capacity-Cv [J/molK]
            // fluidProperties[k++] = fluid.Cp()/fluid.getCv();// Mix Kappa (Cp/Cv)
            fluidProperties[k++] = fluid.getGamma();                     // Mix Kappa (Cp/Cv)
            fluidProperties[k++] = Double.NaN;                           // Mix JT Coefficient [K/Pa]
            fluidProperties[k++] = Double.NaN;                           // Mix Velocity of Sound [m/s]
            fluidProperties[k++] = fluid.getViscosity("kg/msec");        // Mix Viscosity [Pa s] or [kg/(m*s)]
            fluidProperties[k++] = fluid.getThermalConductivity("W/mK"); // Mix Thermal Conductivity [W/mK]

            String[] phaseName = { "gas", "oil", "aqueous" };
            for (int j = 0; j < 3; j++)
            {
                if (fluid.hasPhaseType(phaseName[j]))
                {
                    int phaseNumber = fluid.getPhaseNumberOfPhase(phaseName[j]);
                    fluidProperties[k++] = fluid.getMoleFraction(phaseNumber) * 100;                       // Phase Mole Percent
                    fluidProperties[k++] = fluid.getWtFraction(phaseNumber) * 100;                         // Phase Weight Percent
                    fluidProperties[k++] = 1.0 / fluid.getPhase(phaseNumber).getDensity("mol/m3");         // Phase Molar
                                                                                                           // Volume
                                                                                                           // [m3/mol]
                    fluidProperties[k++] = fluid.getCorrectedVolumeFraction(phaseNumber) * 100;            // Phase Volume
                                                                                                           // Percent
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getDensity("kg/m3");                // Phase Density [kg/m3]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getZ();                             // Phase Z Factor
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getMolarMass() * 1000;              // Phase Molecular
                                                                                                           // Weight [g/mol]
                                                                                                           // fluidProperties[k++] = fluid.getPhase(phaseNumber).getEnthalpy() /
                                                                                                           // fluid.getPhase(phaseNumber).getNumberOfMolesInPhase(); // Phase Enthalpy
                                                                                                           // [J/mol]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getEnthalpy("J/mol");               // Phase Enthalpy
                                                                                                           // [J/mol]
                                                                                                           // fluidProperties[k++] = fluid.getPhase(phaseNumber).getEntropy() /
                                                                                                           // fluid.getPhase(phaseNumber).getNumberOfMolesInPhase(); // Phase Entropy
                                                                                                           // [J/molK]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getEntropy("J/molK");               // Phase Entropy
                                                                                                           // [J/molK]
                                                                                                           // fluidProperties[k++] = fluid.getPhase(phaseNumber).getCp() /
                                                                                                           // fluid.getPhase(phaseNumber).getNumberOfMolesInPhase(); // Phase Heat
                                                                                                           // Capacity-Cp [J/molK]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getCp("J/molK");                    // Phase Heat Capacity-Cp
                                                                                                           // [J/molK]
                                                                                                           // fluidProperties[k++] = fluid.getPhase(phaseNumber).getCv() /
                                                                                                           // fluid.getPhase(phaseNumber).getNumberOfMolesInPhase(); // Phase Heat
                                                                                                           // Capacity-Cv [J/molK]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getCv("J/molK");                    // Phase Heat Capacity-Cv
                                                                                                           // [J/molK]
                                                                                                           // fluidProperties[k++] = fluid.getPhase(phaseNumber).getCp() /
                                                                                                           // fluid.getPhase(phaseNumber).getCv(); // Phase Kappa (Cp/Cv)
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getKappa();                         // Phase Kappa (Cp/Cv)
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getJouleThomsonCoefficient() / 1e5; // Phase
                                                                                                           // JT
                                                                                                           // Coefficient
                                                                                                           // [K/Pa]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getSoundSpeed();                    // Phase Velocity of Sound
                                                                                                           // [m/s]
                                                                                                           // fluidProperties[k++] =
                                                                                                           // fluid.getPhase(phaseNumber).getPhysicalProperties().getViscosity();// Phase
                                                                                                           // Viscosity [Pa s]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getViscosity("kg/msec");            // Phase Viscosity [Pa
                                                                                                           // s] or [kg/msec]
                                                                                                           // fluidProperties[k++] =
                                                                                                           // fluid.getPhase(phaseNumber).getPhysicalProperties().getConductivity(); //
                                                                                                           // Phase Thermal Conductivity [W/mK]
                    fluidProperties[k++] = fluid.getPhase(phaseNumber).getConductivity("W/mK");            // Phase Thermal
                                                                                                           // Conductivity
                                                                                                           // [W/mK]
                                                                                                           // Phase Surface Tension(N/m) ** NOT USED
                }
                else
                {
                    fluidProperties[k++] = Double.NaN; // Phase Mole Percent
                    fluidProperties[k++] = Double.NaN; // Phase Weight Percent
                    fluidProperties[k++] = Double.NaN; // Phase Molar Volume [m3/mol]
                    fluidProperties[k++] = Double.NaN; // Phase Volume Percent
                    fluidProperties[k++] = Double.NaN; // Phase Density [kg/m3]
                    fluidProperties[k++] = Double.NaN; // Phase Z Factor
                    fluidProperties[k++] = Double.NaN; // Phase Molecular Weight [g/mol]
                    fluidProperties[k++] = Double.NaN; // Phase Enthalpy [J/mol]
                    fluidProperties[k++] = Double.NaN; // Phase Entropy [J/molK]
                    fluidProperties[k++] = Double.NaN; // Phase Heat Capacity-Cp [J/molK]
                    fluidProperties[k++] = Double.NaN; // Phase Heat Capacity-Cv [J/molK]
                    fluidProperties[k++] = Double.NaN; // Phase Kappa (Cp/Cv)
                    fluidProperties[k++] = Double.NaN; // Phase JT Coefficient K/Pa]
                    fluidProperties[k++] = Double.NaN; // Phase Velocity of Sound [m/s]
                    fluidProperties[k++] = Double.NaN; // Phase Viscosity [Pa s]
                    fluidProperties[k++] = Double.NaN; // Phase Thermal Conductivity [W/mK]
                }
            }

            fluid.initProperties();
        }