PR

This function initializes a pure-component Peng-Robinson cubic EOS with critical properties and two specified state variables among temperature, pressure, and molar volume.

It returns key solved properties such as phase label, pressure, temperature, and liquid and vapor molar-volume roots when available.

Excel Usage

=PR(critical_temperature, critical_pressure, omega, temperature, pressure, molar_volume)
  • critical_temperature (float, required): Critical temperature (K).
  • critical_pressure (float, required): Critical pressure (Pa).
  • omega (float, required): Acentric factor (-).
  • temperature (float, optional, default: null): Temperature (K).
  • pressure (float, optional, default: null): Pressure (Pa).
  • molar_volume (float, optional, default: null): Molar volume (m^3/mol).

Returns (list[list]): 2D array with EOS phase and selected state properties.

Example 1: Temperature-pressure initialization

Inputs:

critical_temperature critical_pressure omega temperature pressure
507.6 3025000 0.2975 400 1000000

Excel formula:

=PR(507.6, 3025000, 0.2975, 400, 1000000)

Expected output:

Property Value
phase l/g
T 400
P 1000000
V_l 0.000156073
V_g 0.00214188
Example 2: Lower-temperature liquid-region initialization

Inputs:

critical_temperature critical_pressure omega temperature pressure
507.6 3025000 0.2975 299 1000000

Excel formula:

=PR(507.6, 3025000, 0.2975, 299, 1000000)

Expected output:

Property Value
phase l
T 299
P 1000000
V_l 0.000130222
V_g
Example 3: Temperature-volume initialization

Inputs:

critical_temperature critical_pressure omega temperature molar_volume
507.6 3025000 0.2975 299 0.000130222125139

Excel formula:

=PR(507.6, 3025000, 0.2975, 299, 0.000130222125139)

Expected output:

Property Value
phase l
T 299
P 1000000
V_l 0.000130222
V_g
Example 4: Pressure-volume initialization

Inputs:

critical_temperature critical_pressure omega pressure molar_volume
507.6 3025000 0.2975 1000000 0.000130222125139

Excel formula:

=PR(507.6, 3025000, 0.2975, 1000000, 0.000130222125139)

Expected output:

Property Value
phase l
T 299
P 1000000
V_l 0.000130222
V_g

Python Code

Show Code
from thermo.eos import PR as thermo_pr

def pr(critical_temperature, critical_pressure, omega, temperature=None, pressure=None, molar_volume=None):
    """
    Solve pure-component Peng-Robinson EOS and return key phase-state properties.

    See: https://thermo.readthedocs.io/thermo.eos.html#thermo.eos.PR

    This example function is provided as-is without any representation of accuracy.

    Args:
        critical_temperature (float): Critical temperature (K).
        critical_pressure (float): Critical pressure (Pa).
        omega (float): Acentric factor (-).
        temperature (float, optional): Temperature (K). Default is None.
        pressure (float, optional): Pressure (Pa). Default is None.
        molar_volume (float, optional): Molar volume (m^3/mol). Default is None.

    Returns:
        list[list]: 2D array with EOS phase and selected state properties.
    """
    try:
        specified = 0
        for value in [temperature, pressure, molar_volume]:
            if value is not None:
                specified += 1
        if specified < 2:
            return "Error: At least two of temperature, pressure, and molar_volume must be provided"

        eos = thermo_pr(Tc=critical_temperature, Pc=critical_pressure, omega=omega, T=temperature, P=pressure, V=molar_volume)

        return [
            ["Property", "Value"],
            ["phase", str(getattr(eos, "phase", ""))],
            ["T", getattr(eos, "T", None)],
            ["P", getattr(eos, "P", None)],
            ["V_l", getattr(eos, "V_l", None)],
            ["V_g", getattr(eos, "V_g", None)]
        ]
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Critical temperature (K).
Critical pressure (Pa).
Acentric factor (-).
Temperature (K).
Pressure (Pa).
Molar volume (m^3/mol).