{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Implementing an equation of state in python\n",
"\n",
"> In `FeOs`, you can implement your equation of state in python, register it to the Rust backend, and compute properties and phase equilbria as if you implemented it in Rust.\n",
"> In this tutorial, we will implement the Peng-Robinson equation of state."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Table of contents \n",
"\n",
"- [Implementation](#Implementation)\n",
"- [Computing properties](#Computing-properties)\n",
"- [Critical point](#Critical-point)\n",
"- [Phase equilibria and phase diagrams](#Phase-equilibria-and-phase-diagrams)\n",
"- [Mixtures](#Mixtures)\n",
"- [Comparison to Rust implementation](#Comparison-to-Rust-implementation)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from feos.eos import *\n",
"from feos.si import *\n",
"import numpy as np\n",
"\n",
"optional = True\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"if optional:\n",
" import matplotlib.pyplot as plt\n",
" import pandas as pd\n",
" import seaborn as sns\n",
"\n",
" sns.set_style(\"ticks\")\n",
" sns.set_palette(\"Dark2\")\n",
" sns.set_context(\"talk\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Implementation \n",
"[↑ Back to top](#toc)\n",
"\n",
"To implement an equation of state in python, we have to define a `class` which has to have the following methods:\n",
"\n",
"```python\n",
"class MyEquationOfState:\n",
" def helmholtz_energy(self, state: StateHD) -> D\n",
" \n",
" def components(self) -> int\n",
" \n",
" def subset(self, indices: List[int]) -> Self\n",
" \n",
" def molar_weight(self) -> SIArray1\n",
" \n",
" def max_density(self, moles: SIArray1) -> f64\n",
"``` \n",
"\n",
"- `components(self) -> int`: Returns the number of components (usually inferred from the shape of the input parameters).\n",
"- `molar_weight(self) -> SIArray1`: Returns an `SIArray1` with size equal to the number of components containing the molar mass of each component.\n",
"- `max_density(self, moles: np.ndarray[float]) -> float`: Returns the maximum allowed number density in units of `molecules/Angstrom³`.\n",
"- `subset(self, indices: List[int]) -> self`: Returns a new equation of state with parameters defined in `indices`.\n",
"- `helmholtz_energy(self, state: StateHD) -> Dual`: Returns the helmholtz energy as (hyper)-dual number given a `StateHD`."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"SQRT2 = np.sqrt(2)\n",
"\n",
"class PyPengRobinson: \n",
" def __init__(\n",
" self, critical_temperature, critical_pressure, \n",
" acentric_factor, molar_weight, delta_ij=None\n",
" ):\n",
" \"\"\"Peng-Robinson Equation of State\n",
" \n",
" Parameters\n",
" ----------\n",
" critical_temperature : SIArray1\n",
" critical temperature of each component.\n",
" critical_pressure : SIArray1\n",
" critical pressure of each component.\n",
" acentric_factor : np.array[float] \n",
" acentric factor of each component (dimensionless).\n",
" molar_weight: SIArray1\n",
" molar weight of each component.\n",
" delta_ij : np.array[[float]], optional\n",
" binary parameters. Shape=[n, n], n = number of components.\n",
" defaults to zero for all binary interactions.\n",
" \n",
" Raises\n",
" ------\n",
" ValueError: if the input values have incompatible sizes.\n",
" \"\"\"\n",
" self.n = len(critical_temperature)\n",
" if len(set((\n",
" len(critical_temperature), \n",
" len(critical_pressure), \n",
" len(acentric_factor)\n",
" ))) != 1:\n",
" raise ValueError(\"Input parameters must all have the same lenght.\")\n",
" \n",
" self.tc = critical_temperature / KELVIN\n",
" self.pc = critical_pressure / PASCAL\n",
" self.omega = acentric_factor\n",
" self.mw = molar_weight / GRAM * MOL\n",
"\n",
" self.a_r = (0.45724 * critical_temperature**2 * RGAS \n",
" / critical_pressure / ANGSTROM**3 / NAV / KELVIN)\n",
" self.b = (0.07780 * critical_temperature * RGAS \n",
" / critical_pressure / ANGSTROM**3 / NAV)\n",
" self.kappa = (0.37464 \n",
" + (1.54226 - 0.26992 * acentric_factor) * acentric_factor)\n",
" self.delta_ij = (np.zeros((self.n, self.n)) \n",
" if delta_ij is None else delta_ij)\n",
" \n",
" def helmholtz_energy(self, state):\n",
" \"\"\"Return helmholtz energy.\n",
" \n",
" Parameters\n",
" ----------\n",
" state : StateHD\n",
" The thermodynamic state.\n",
" \n",
" Returns\n",
" -------\n",
" helmholtz_energy: float | any dual number\n",
" The return type depends on the input types.\n",
" \"\"\" \n",
" n = np.sum(state.moles)\n",
" x = state.molefracs\n",
" tr = 1.0 / self.tc * state.temperature\n",
" ak = ((1.0 - np.sqrt(tr)) * self.kappa + 1.0)**2 * self.a_r\n",
" ak_mix = 0.0\n",
" if self.n > 1:\n",
" for i in range(self.n):\n",
" for j in range(self.n):\n",
" ak_mix += (np.sqrt(ak[i] * ak[j]) \n",
" * (x[i] * x[j] * (1.0 - self.delta_ij[i, j])))\n",
" else:\n",
" ak_mix = ak[0]\n",
" b = np.sum(x * self.b)\n",
" v = state.volume\n",
" rho = np.sum(state.partial_density)\n",
" a = n * (-np.log(1.0 - b * rho) \n",
" - ak_mix / (b * SQRT2 * 2.0 * state.temperature) \n",
" * np.log((1.0 + (1.0 + SQRT2) * b * rho) / (1.0 + (1.0 - SQRT2) * b * rho)))\n",
" return a\n",
" \n",
" def components(self) -> int: \n",
" \"\"\"Number of components.\"\"\"\n",
" return self.n\n",
" \n",
" def subset(self, i: [int]):\n",
" \"\"\"Return new equation of state containing a subset of all components.\"\"\"\n",
" if self.n > 1:\n",
" tc = self.tc[i] \n",
" pc = self.pc[i]\n",
" mw = self.mw[i]\n",
" omega = self.omega[i]\n",
" return PyPengRobinson(\n",
" SIArray1(tc * KELVIN), \n",
" SIArray1(pc * PASCAL), \n",
" omega, \n",
" SIArray1(mw * GRAM / MOL)\n",
" )\n",
" else:\n",
" return self\n",
" \n",
" def molar_weight(self) -> SIArray1:\n",
" return SIArray1(self.mw * GRAM / MOL)\n",
" \n",
" def max_density(self, moles:[float]) -> float:\n",
" b = np.sum(moles * self.b) / np.sum(moles);\n",
" return 0.9 / b "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing properties \n",
"[↑ Back to top](#toc)\n",
"\n",
"Let's compute some properties. First, we have to instanciate the class and register it to Rust.\n",
"This is done using the `EquationOfState.python` method."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"tc = SIArray1(369.96 * KELVIN)\n",
"pc = SIArray1(4250000.0 * PASCAL)\n",
"omega = np.array([0.153])\n",
"molar_weight = SIArray1(44.0962 * GRAM / MOL)\n",
"\n",
"# create an instance of our python class and hand it over to rust\n",
"pr = PyPengRobinson(tc, pc, omega, molar_weight)\n",
"eos = EquationOfState.python(pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Thermodynamic state: the `State` object\n",
"\n",
"Before we can compute a property, we create a `State` object. This can be done in several ways depending on what control variables we need.\n",
"If no total amount of substance is defined, it is set to $n = \\frac{1}{N_{AV}}$.\n",
"For possible input combinations, you can inspect the signature of the constructor using `State?`."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\u001b[0;31mInit signature:\u001b[0m \u001b[0mState\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m/\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mDocstring:\u001b[0m \n",
"A thermodynamic state at given conditions.\n",
"\n",
"Parameters\n",
"----------\n",
"eos : Eos\n",
" The equation of state to use.\n",
"temperature : SINumber, optional\n",
" Temperature.\n",
"volume : SINumber, optional\n",
" Volume.\n",
"density : SINumber, optional\n",
" Molar density.\n",
"partial_density : SIArray1, optional\n",
" Partial molar densities.\n",
"total_moles : SINumber, optional\n",
" Total amount of substance (of a mixture).\n",
"moles : SIArray1, optional\n",
" Amount of substance for each component.\n",
"molefracs : numpy.ndarray[float]\n",
" Molar fraction of each component.\n",
"pressure : SINumber, optional\n",
" Pressure.\n",
"molar_enthalpy : SINumber, optional\n",
" Molar enthalpy.\n",
"molar_entropy : SINumber, optional\n",
" Molar entropy.\n",
"molar_internal_energy: SINumber, optional\n",
" Molar internal energy\n",
"density_initialization : {'vapor', 'liquid', SINumber, None}, optional\n",
" Method used to initialize density for density iteration.\n",
" 'vapor' and 'liquid' are inferred from the maximum density of the equation of state.\n",
" If no density or keyword is provided, the vapor and liquid phase is tested and, if\n",
" different, the result with the lower free energy is returned.\n",
"initial_temperature : SINumber, optional\n",
" Initial temperature for temperature iteration. Can improve convergence\n",
" when the state is specified with pressure and molar entropy or enthalpy.\n",
"\n",
"Returns\n",
"-------\n",
"State : state at given conditions\n",
"\n",
"Raises\n",
"------\n",
"Error\n",
" When the state cannot be created using the combination of input.\n",
"\u001b[0;31mType:\u001b[0m type\n",
"\u001b[0;31mSubclasses:\u001b[0m \n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"State?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we use input variables other than $\\mathbf{N}, V, T$ (the natural variables of the Helmholtz energy), creating a state is an iterative procedure.\n",
"For example, we can create a state for a give $T, p$, which will result in a iteration of the volume (density)."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$1.6605\\times10^{-24}\\,\\mathrm{ mol}$"
],
"text/plain": [
"1.6605390671738466e-24 mol"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# If no amount of substance is given, it is set to 1/NAV.\n",
"s = State(eos, temperature=300*KELVIN, pressure=1*BAR)\n",
"s.total_moles"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$1\\,\\mathrm{ mol}$"
],
"text/plain": [
"1 mol"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s_pt = State(\n",
" eos, \n",
" temperature=300*KELVIN, \n",
" pressure=1*BAR, \n",
" total_moles=1*MOL\n",
")\n",
"s_pt.total_moles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use other variables as well. For example, we can create a state at given $h, p$ (using the enthalpy from the prior computation as input):"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"s_ph = State(\n",
" eos, \n",
" pressure=1*BAR, \n",
" molar_enthalpy=s_pt.molar_enthalpy()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rel. dev.\n",
"entropy : 1.2028878239185388e-16\n",
"density : -1.8532974044002563e-15\n",
"temperature: 1.5158245029548805e-15\n"
]
}
],
"source": [
"# check if states are equal\n",
"print(\"rel. dev.\")\n",
"print(\n",
" \"entropy : \", \n",
" (s_ph.molar_entropy() - s_pt.molar_entropy()) / s_pt.molar_entropy()\n",
")\n",
"print(\n",
" \"density : \", \n",
" (s_ph.mass_density() - s_pt.mass_density()) / s_pt.mass_density()\n",
")\n",
"print(\n",
" \"temperature: \",\n",
" (s_ph.temperature - s_pt.temperature) / s_pt.temperature\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Critical point \n",
"[↑ Back to top](#toc)\n",
"\n",
"To generate a state at critical conditions, we can use the `critical_point` constructor."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Critical point\n",
"temperature: 369.9506174234607 K\n",
"density : 198.1862458057177 kg/m³\n",
"pressure : 4.249677749116942 MPa\n"
]
}
],
"source": [
"s_cp = State.critical_point(eos)\n",
"print(\"Critical point\")\n",
"print(\"temperature: \", s_cp.temperature)\n",
"print(\"density : \", s_cp.mass_density())\n",
"print(\"pressure : \", s_cp.pressure())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Phase equilibria and phase diagrams\n",
"[↑ Back to top](#toc)\n",
"\n",
"We can also create an object, `PhaseEquilibrium`, that contains states that are in equilibrium."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"||temperature|density|\n",
"|-|-|-|\n",
"|phase 1|300.00000 K|488.99014 mol/m³|\n",
"|phase 2|300.00000 K|11.53399 kmol/m³|\n"
],
"text/plain": [
"phase 0: T = 300.00000 K, ρ = 488.99014 mol/m³\n",
"phase 1: T = 300.00000 K, ρ = 11.53399 kmol/m³"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vle = PhaseEquilibrium.pure(eos, 300.0*KELVIN)\n",
"vle"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each phase is a `State` object. We can simply access these states and compute properties, just like before."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"|temperature|density|\n",
"|-|-|\n",
"|300.00000 K|11.53399 kmol/m³|"
],
"text/plain": [
"T = 300.00000 K, ρ = 11.53399 kmol/m³"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vle.liquid # the high density phase `State`"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"|temperature|density|\n",
"|-|-|\n",
"|300.00000 K|488.99014 mol/m³|"
],
"text/plain": [
"T = 300.00000 K, ρ = 488.99014 mol/m³"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vle.vapor # the low density phase `State`"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Heat of vaporization: 14.782343503305114 kJ/mol\n",
"for T = 300 K\n",
"and p = 9.95 bar\n"
]
}
],
"source": [
"# we can now easily compute any property:\n",
"print(\"Heat of vaporization: \", vle.vapor.molar_enthalpy() - vle.liquid.molar_enthalpy())\n",
"print(\"for T = {}\".format(vle.liquid.temperature))\n",
"print(\"and p = {:.2f} bar\".format(vle.liquid.pressure() / BAR))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also easily compute **vapor pressures** and **boiling temperatures**:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"vapor pressure (T = 300 K): 994.7761635610093 kPa\n",
"boiling temperature (p = 3 bar): 247.84035574956746 K\n"
]
}
],
"source": [
"# This also works for mixtures, in which case the pure component properties are computed.\n",
"# Hence, the result is a list - that is why we use an index [0] here.\n",
"print(\"vapor pressure (T = 300 K):\", PhaseEquilibrium.vapor_pressure(eos, 300*KELVIN)[0])\n",
"print(\"boiling temperature (p = 3 bar):\", PhaseEquilibrium.boiling_temperature(eos, 2*BAR)[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Phase Diagram\n",
"\n",
"We could repeatedly compute `PhaseEquilibrium` states for different temperatures / pressures to generate a phase diagram.\n",
"Because this a common task, there is a object for that as well.\n",
"\n",
"The `PhaseDiagram` object creates multiple `PhaseEquilibrium` objects (`npoints` of those) between a given lower temperature and the critical point."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"dia = PhaseDiagram.pure(eos, 230.0 * KELVIN, 500)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can access each `PhaseEquilbrium` and then conveniently comput any property we like:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"enthalpy_of_vaporization = [\n",
" (vle.vapor.molar_enthalpy() - vle.liquid.molar_enthalpy()) / (KILO * JOULE) * MOL \n",
" for vle in dia.states\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(7, 4))\n",
"sns.lineplot(x=dia.vapor.temperature / KELVIN, y=enthalpy_of_vaporization, ax=ax);\n",
"ax.set_ylabel(r\"$\\Delta^{LV}h$ / kJ / mol\")\n",
"ax.set_xlabel(r\"$T$ / K\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A more convenient way is to create a dictionary. The dictionary can be used to build pandas `DataFrame` objects.\n",
"This is a bit less flexible, because the units of the properties are rigid. You can inspect the method signature to check what units are used."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\u001b[0;31mSignature:\u001b[0m \u001b[0mdia\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mDocstring:\u001b[0m\n",
"Returns the phase diagram as dictionary.\n",
"\n",
"Units\n",
"-----\n",
"temperature : K\n",
"pressure : Pa\n",
"densities : mol / m³\n",
"molar enthalpies : kJ / mol\n",
"molar entropies : kJ / mol / K\n",
"\n",
"Returns\n",
"-------\n",
"dict[str, list[float]]\n",
" Keys: property names. Values: property for each state.\n",
"\n",
"Notes\n",
"-----\n",
"xi: liquid molefraction of component i\n",
"yi: vapor molefraction of component i\n",
"i: component index according to order in parameters.\n",
"\u001b[0;31mType:\u001b[0m builtin_function_or_method\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dia.to_dict?"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" density liquid | \n",
" density vapor | \n",
" molar enthalpy vapor | \n",
" temperature | \n",
" molar enthalpy liquid | \n",
" pressure | \n",
" molar entropy liquid | \n",
" molar entropy vapor | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 14125.988947 | \n",
" 52.208491 | \n",
" 22.140400 | \n",
" 230.000000 | \n",
" 3.376293 | \n",
" 96625.278174 | \n",
" 0.039106 | \n",
" 0.120689 | \n",
"
\n",
" \n",
" 1 | \n",
" 14118.006852 | \n",
" 52.811929 | \n",
" 22.135738 | \n",
" 230.280462 | \n",
" 3.383021 | \n",
" 97830.133956 | \n",
" 0.039135 | \n",
" 0.120569 | \n",
"
\n",
" \n",
" 2 | \n",
" 14110.010220 | \n",
" 53.420767 | \n",
" 22.131064 | \n",
" 230.560924 | \n",
" 3.389761 | \n",
" 99046.729400 | \n",
" 0.039164 | \n",
" 0.120449 | \n",
"
\n",
" \n",
" 3 | \n",
" 14101.999011 | \n",
" 54.035036 | \n",
" 22.126380 | \n",
" 230.841386 | \n",
" 3.396514 | \n",
" 100275.143120 | \n",
" 0.039193 | \n",
" 0.120330 | \n",
"
\n",
" \n",
" 4 | \n",
" 14093.973182 | \n",
" 54.654773 | \n",
" 22.121683 | \n",
" 231.121849 | \n",
" 3.403278 | \n",
" 101515.453964 | \n",
" 0.039221 | \n",
" 0.120211 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" density liquid density vapor molar enthalpy vapor temperature \\\n",
"0 14125.988947 52.208491 22.140400 230.000000 \n",
"1 14118.006852 52.811929 22.135738 230.280462 \n",
"2 14110.010220 53.420767 22.131064 230.560924 \n",
"3 14101.999011 54.035036 22.126380 230.841386 \n",
"4 14093.973182 54.654773 22.121683 231.121849 \n",
"\n",
" molar enthalpy liquid pressure molar entropy liquid \\\n",
"0 3.376293 96625.278174 0.039106 \n",
"1 3.383021 97830.133956 0.039135 \n",
"2 3.389761 99046.729400 0.039164 \n",
"3 3.396514 100275.143120 0.039193 \n",
"4 3.403278 101515.453964 0.039221 \n",
"\n",
" molar entropy vapor \n",
"0 0.120689 \n",
"1 0.120569 \n",
"2 0.120449 \n",
"3 0.120330 \n",
"4 0.120211 "
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_dia = pd.DataFrame(dia.to_dict())\n",
"data_dia.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once we have a dataframe, we can store our results or create a nicely looking plot:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"def phase_plot(data, x, y):\n",
" fig, ax = plt.subplots(figsize=(12, 6))\n",
" if x != \"pressure\" and x != \"temperature\":\n",
" xl = f\"{x} liquid\"\n",
" xv = f\"{x} vapor\"\n",
" else:\n",
" xl = x\n",
" xv = x\n",
" if y != \"pressure\" and y != \"temperature\":\n",
" yl = f\"{y} liquid\"\n",
" yv = f\"{y} vapor\"\n",
" else:\n",
" yv = y\n",
" yl = y\n",
" sns.lineplot(data=data, x=xv, y=yv, ax=ax, label=\"vapor\")\n",
" sns.lineplot(data=data, x=xl, y=yl, ax=ax, label=\"liquid\")\n",
" ax.set_xlabel(x)\n",
" ax.set_ylabel(y)\n",
" ax.legend(frameon=False)\n",
" sns.despine();"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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bHN0dCxc6jE5Ofk/X+/h4VHYdnM+d911F/n5+bz55pvs2rWLvn37/udvAkRE7Jlm3EVEyqkhQ4awYsUKxo8fz969ewkLC2P79u3s2rULf3//IsdWrVqVF154geeee45evXrRu3dvgoODSUhI4MCBA6xdu5ZvvvmGkJCQEmU4evQo999/P927d6devXr4+Phw5MgRPv30U0JCQi66ZGPz5s3ZsmUL7733HtWrV8disXDzzTcX7q9bty4tW7Zk2bJlWCwW7rjjjhLlExGxJyrcRUTKKV9fXz7++GNee+01li5dimEYtGnThgULFpz3JtTbb7+dWrVqMW/ePBYtWkRqaip+fn7Url2bkSNHUqVKlRJnqFq1Krfffjvbtm1j7dq15OTkEBQUxJ133snDDz+Mu7v7f77++eefZ+LEicyaNYv09HSAIoU7FMy679y5kzZt2pz3hlkRkfLCYvz7DiURERE7snLlSv73v//x1ltvccstt5gdR0SkzKjHXURE7Nonn3yCv78/N954o9lRRETKlFplRETE7sTHx7NlyxZ27NjBzz//zJNPPomLi4vZsUREypQKdxERsTuHDh3iySefxMfHh3vuuYcHH3zQ7EgiImVOPe4iIiIiInZAPe4iIiIiInZAhbuIiIiIiB1Q4S4iIiIiYgdUuIuIiIiI2AEV7iIiIiIidkCFu4iIiIiIHfh/Dl5fgvoeseQAAAAASUVORK5CYII=",
"text/plain": [
"