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).