Exemple #1
0
    static Evaluation vaporPressure(const Evaluation& temperature)
    {
        typedef MathToolbox<Evaluation> Toolbox;

        if (temperature > criticalTemperature())
            return criticalPressure();
        if (temperature < tripleTemperature())
            return 0; // N2 is solid: We don't take sublimation into
                      // account

        // note: this is the ancillary equation given on page 1368
        const Evaluation& sigma = 1.0 - temperature/criticalTemperature();
        const Evaluation& sqrtSigma = Toolbox::sqrt(sigma);
        const Scalar N1 = -6.12445284;
        const Scalar N2 = 1.26327220;
        const Scalar N3 = -0.765910082;
        const Scalar N4 = -1.77570564;
        return
            criticalPressure() *
            Toolbox::exp(criticalTemperature()/temperature*
                         (sigma*(N1 +
                                 sqrtSigma*N2 +
                                 sigma*(sqrtSigma*N3 +
                                        sigma*sigma*sigma*N4))));
    }
Exemple #2
0
    static Evaluation vaporPressure(const Evaluation& T)
    {
        typedef Opm::MathToolbox<Evaluation> Toolbox;

        if (T > criticalTemperature())
            return criticalPressure();
        if (T < tripleTemperature())
            return 0; // water is solid: We don't take sublimation into account

        static const Scalar n[10] = {
            0.11670521452767e4, -0.72421316703206e6, -0.17073846940092e2,
            0.12020824702470e5, -0.32325550322333e7, 0.14915108613530e2,
            -0.48232657361591e4, 0.40511340542057e6, -0.23855557567849,
            0.65017534844798e3
        };

        Evaluation sigma = T + n[8]/(T - n[9]);

        Evaluation A = (sigma + n[0])*sigma + n[1];
        Evaluation B = (n[2]*sigma + n[3])*sigma + n[4];
        Evaluation C = (n[5]*sigma + n[6])*sigma + n[7];

        Evaluation tmp = 2.0*C/(Toolbox::sqrt(B*B - 4.0*A*C) - B);
        tmp *= tmp;
        tmp *= tmp;

        return 1e6*tmp;
    }