diff --git a/examples/pcsaft/parameter_adjustment/README.md b/examples/pcsaft/parameter_adjustment/README.md new file mode 100644 index 000000000..18911cd70 --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/README.md @@ -0,0 +1,5 @@ +# Example notebooks for adjusting PC-SAFT parameters to experimental data + +- Adjust **PC-SAFT parameters** $m$, $\sigma$ and $\epsilon_k$ for a pure substance. [🠒 Notebook](adjust_non_polar_non_asssociating.ipynb) +- Adjust **binary PC-SAFT parameter** $k_{ij}$ to VLE data. [🠒 Notebook](adjust_kij.ipynb) +- Adjust **entropy scaling** correlation parameters for the viscosity of a pure substance using PC-SAFT. [🠒 Notebook](adjust_viscosity_correlation.ipynb) \ No newline at end of file diff --git a/examples/pcsaft/parameter_adjustment/adjust_kij.ipynb b/examples/pcsaft/parameter_adjustment/adjust_kij.ipynb new file mode 100644 index 000000000..14c45ee4d --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/adjust_kij.ipynb @@ -0,0 +1,601 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2a6eb367-6205-4244-a6cd-da994342e3d5", + "metadata": {}, + "source": [ + "# Adjusting PC-SAFT binary $k_{ij}$ parameter " + ] + }, + { + "cell_type": "markdown", + "id": "eb4e4769-2ea1-4241-a64f-742cd9147b82", + "metadata": {}, + "source": [ + "## Goal\n", + "\n", + "- Read in experimental data for binary VLEs\n", + "- Use the `DataSet`, `Loss` and `Estimator` objects to store and work with experimental data.\n", + "- Define a `cost` function that will be used with `scipy.optimize.least_squares`.\n", + "- Run the optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5bbffc77-9ab5-4996-8980-a464c75959b9", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.optimize import least_squares\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from feos.si import BAR, KELVIN, KILOGRAM, METER\n", + "from feos.eos import EquationOfState, PhaseDiagram\n", + "from feos.pcsaft import Identifier, IdentifierOption, PcSaftParameters, PcSaftRecord, PureRecord\n", + "from feos.eos.estimator import Estimator, Loss, DataSet, Phase\n", + "\n", + "sns.set_context('talk')\n", + "sns.set_palette('Dark2')\n", + "sns.set_style('ticks')\n", + "colors = sns.palettes.color_palette('Dark2', 5)\n", + "plt.rcParams['figure.figsize'] = [12,7]" + ] + }, + { + "cell_type": "markdown", + "id": "ec15860d-6c4f-4fbc-bf8f-7243beee6226", + "metadata": {}, + "source": [ + "## Defining a cost function\n", + "\n", + "We will solve the fitting-problem using `scipy`'s `least_squares` solver, which requires a function to calculate the cost or residuals. The first argument of this function must be the parameter vector that's being optimized. Therefore, it is necessary to define this function in Python before working with `least_squares`.\n", + "\n", + "To simplify the process, we create two functions:\n", + "\n", + "- `eos_from_kij`: This function constructs the equation of state based on the current $k_{ij}$ value. Since FeO$_\\text{s}$ does not allow mutation of an existing `EquationOfState` object, generating a new equation of state is necessary. We can use this function later to generate the equation of state for the final parameter.\n", + "- `cost`: Taking the parameter and estimator (discussed below) as inputs, this function builds the equation of state, calculates the cost of the current model, and returns the result." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7d84054b-62d4-44eb-a548-e6d5e92cfb86", + "metadata": {}, + "outputs": [], + "source": [ + "def eos_from_kij(kij):\n", + " \"\"\"Returns equation of state (PC-SAFT) for current kij.\"\"\"\n", + " global parameters\n", + " p = PcSaftParameters.new_binary(parameters.pure_records, kij)\n", + " return EquationOfState.pcsaft(p)\n", + "\n", + "def cost(kij, estimator):\n", + " \"\"\"Calculates cost function for current parameters.\"\"\"\n", + " return estimator.cost(eos_from_kij(kij))" + ] + }, + { + "cell_type": "markdown", + "id": "0bd26bc1-5d56-4a55-a266-c5679e8e97bd", + "metadata": {}, + "source": [ + "### Utility function - plot experiment and prediciton\n", + "\n", + "The following function takes experimental data and a $k_{ij}$ value as input and produces a phase diagram depicting both experiment and prediction from the equation of state." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b809b90b-7ff4-44ca-9d2b-9b78fdf59a01", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_comparison(data, kij):\n", + " \"\"\"Generates a plot for each experimental isotherm and PC-SAFT estimate\"\"\"\n", + " for i, (temperature, isotherm) in enumerate(data.groupby('t')):\n", + " # plot experiment\n", + " plt.plot(\n", + " isotherm.x1, isotherm.p, \n", + " color=colors[i], marker='s', linestyle=\"\",\n", + " label=f\"T = {temperature} K\"\n", + " )\n", + " plt.plot(\n", + " isotherm.y1, isotherm.p, \n", + " color=colors[i], marker='s', linestyle=\"\",\n", + " )\n", + "\n", + " # plot PC-SAFT\n", + " vle = PhaseDiagram.binary_vle(\n", + " eos_from_kij(kij), \n", + " temperature*KELVIN, \n", + " npoints=25\n", + " )\n", + " plt.plot(\n", + " vle.liquid.molefracs[:, 0], vle.liquid.pressure / BAR,\n", + " color=colors[i]\n", + " )\n", + " plt.plot(\n", + " vle.vapor.molefracs[:, 0], vle.vapor.pressure / BAR,\n", + " color=colors[i]\n", + " )\n", + "\n", + " plt.xlim(0, 1)\n", + " plt.ylim(0.1, 0.8)\n", + " plt.xlabel(r\"$x_1, y_1$\")\n", + " plt.ylabel(r\"$p$ / bar\")\n", + " plt.legend(\n", + " frameon=False, \n", + " title=r\"$k_{ij} = $\" + f\"{kij:8.4f}\",\n", + " bbox_to_anchor=[1,1]\n", + " );" + ] + }, + { + "cell_type": "markdown", + "id": "728613b1-fa04-4867-8237-4186faed328a", + "metadata": {}, + "source": [ + "## Experimental data\n", + "\n", + "We are using experimental data extracted from the openly available supplementary information of the work of [Jaubert et al.](https://doi.org/10.1021/acs.iecr.0c01734). We will be using the binary mixture of 2-propanol and 2,2,4-trimethylpentane as example." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "28a94d65-5509-4104-bf0c-818988504e34", + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_csv(\"data/binary_vle.csv\", delimiter=\"\\t\")" + ] + }, + { + "cell_type": "markdown", + "id": "c53e97dc-95db-485d-bf99-cb60e7e9658d", + "metadata": {}, + "source": [ + "## Compare to PC-SAFT prediction ($k_{ij} = 0.0$)\n", + "\n", + "Before we start, let's inspect how well PC-SAFT predicts this binary mixture. We will use the parameters by Esper et al." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "23b05a20-63c8-47da-9915-3b9eef0b7cda", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "|component|molarweight|$m$|$\\sigma$|$\\varepsilon$|$\\mu$|$Q$|$\\kappa_{AB}$|$\\varepsilon_{AB}$|$N_A$|$N_B$|$N_C$|\n", + "|-|-|-|-|-|-|-|-|-|-|-|-|\n", + "|2-propanol|60.058|3.95902|2.93004|198.97045|0|0|0.03508|1898.4667|1|1|0|\n", + "|2,2,4-trimethylpentane|114.141|3.13984|4.08786|249.78239|0|0|0|0|0|0|0|" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parameters = PcSaftParameters.from_json([\"2-propanol\", \"2,2,4-trimethylpentane\"], \"../../../parameters/pcsaft/esper2023.json\")\n", + "pcsaft = EquationOfState.pcsaft(parameters)\n", + "parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "aad85cf6-5a0a-4ce8-acb9-c3c9a8ab374e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_comparison(data, 0.0)" + ] + }, + { + "cell_type": "markdown", + "id": "38ec44ea-f71d-4557-bc25-6e9d96983442", + "metadata": {}, + "source": [ + "## Build `DataSet` objects\n", + "\n", + "There is definitely room for improvement. Let's start with the `DataSet` object available in FeO$_\\text{s}$.\n", + "A `DataSet` serves as a storage unit for experimental data and also defines a cost function for that specific data set.\n", + "Below, we will use the `DataSet.binary_phase_diagram` constructor and provide temperature, pressures, as well as liquid and vapor mole fractions.\n", + "The `binary_phase_diagram` data set is one of three options - the others will be discussed below.\n", + "Importantly, this data set will use a *distance* criterion as cost function. I.e. the length of the vector that is orthogonal to the phase envelope and that connects to the experimental datum. \n", + "\n", + "Each `DataSet` with this constructor has to contain data for a *single* pressure or temperature. Here, we group the experimental data according to temperatures and end up with 3 `DataSet` objects - one for each temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fea4598b-7d10-4256-9e71-56ea9844921b", + "metadata": {}, + "outputs": [], + "source": [ + "isotherms = [\n", + " DataSet.binary_phase_diagram(\n", + " temperature*KELVIN, \n", + " isotherm.p.values * BAR, \n", + " isotherm.x1.values,\n", + " isotherm.y1.values,\n", + " npoints=40\n", + " ) \n", + " for temperature, isotherm in data.groupby('t')\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "d741aab4-cb51-4a91-8da2-76483e0cabc2", + "metadata": {}, + "source": [ + "## Build `Estimator` object\n", + "\n", + "Next, we use the `Estimator` object. The `Estimator` is a wrapper around multiple `DataSet`s and provides a convenient way to calculate the cost function of multiple `DataSet`s in one function call. Furthermore, we can use the `Estimator` to define weights between `DataSet`s and `Loss` objects for robust regression. In this example, all isotherms have the same weights (each weight is unity) and we perform a simple least squares optimization an thus use `Loss.linear`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "cec22449-afab-429a-aee0-a587f7c61570", + "metadata": {}, + "outputs": [], + "source": [ + "estimator = Estimator(isotherms, weights=[1]*3, losses=[Loss.linear()]*3)" + ] + }, + { + "cell_type": "markdown", + "id": "fb107c4c-a35d-423c-8e22-11983b23da3a", + "metadata": {}, + "source": [ + "## Run the optimization\n", + "\n", + "With that, we can perform the optimization. We set the initial $k_{ij}$ value to zero, the bounds to `[-0.5, 0.5]` and we provide the estimator as additional argument to the `cost` function defined on top of this notebook. Once the optimization successfully finished, we can inspect the results." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e1e6ffea-0eb4-4fdd-995a-6a465326be57", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 5.2773e-05 9.16e-04 \n", + " 1 2 2.5544e-06 5.02e-05 4.13e-02 1.85e-04 \n", + " 2 3 6.8459e-07 1.87e-06 8.62e-03 1.62e-05 \n", + " 3 4 6.6847e-07 1.61e-08 8.77e-04 4.85e-07 \n", + " 4 5 6.6846e-07 1.54e-11 2.79e-05 4.18e-08 \n", + " 5 6 6.6846e-07 1.11e-13 2.41e-06 4.89e-10 \n", + "`gtol` termination condition is satisfied.\n", + "Function evaluations 6, initial cost 5.2773e-05, final cost 6.6846e-07, first-order optimality 4.89e-10.\n", + "CPU times: user 1.41 s, sys: 27.4 ms, total: 1.44 s\n", + "Wall time: 422 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "initial_kij = [0.0]\n", + "fitted_kij = least_squares(cost, initial_kij, bounds=[-0.5, 0.5], args=(estimator,), verbose=2).x" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0f7e8b0f-3bb5-4038-807c-f44194a9c040", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_comparison(data, fitted_kij[0])" + ] + }, + { + "cell_type": "markdown", + "id": "f5c38595-ff70-43e5-bb03-f135cf223bdf", + "metadata": {}, + "source": [ + "# Using other target functions\n", + "\n", + "In the above example, we used `DataSet.binary_phase_diagram` which used the distance criterion as cost. In FeO$_{s}$, we provide two additional cost functions: difference in chemical potentials and difference in pressures." + ] + }, + { + "cell_type": "markdown", + "id": "e9707d8a-f5a0-457a-acc6-1886833477a5", + "metadata": {}, + "source": [ + "## Difference in chemical potentials given $T, p, x_1, y_1$\n", + "\n", + "The cost function of `DataSet.binary_vle_chemical_potential` is defined as difference of the chemical potentials of the vapor and liquid phase (for each substance) for given $\\{T, p, \\bar{y}\\}$ and $\\{T, p, \\bar{x}\\}$, respectively. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c068dd2d-b261-4fd3-87ef-11ef937ce989", + "metadata": {}, + "outputs": [], + "source": [ + "isotherms = [\n", + " DataSet.binary_vle_chemical_potential(\n", + " np.array([temperature]*len(isotherm)) *KELVIN, \n", + " isotherm.p.values * BAR, \n", + " isotherm.x1.values,\n", + " isotherm.y1.values,\n", + " ) \n", + " for temperature, isotherm in data.groupby('t')\n", + "]\n", + "estimator_mu = Estimator(isotherms, weights=[1]*3, losses=[Loss.linear()]*3)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8a349ab6-b51c-487d-ae48-ca34b252089d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 1.2674e-03 2.39e-02 \n", + " 1 2 7.9041e-05 1.19e-03 4.56e-02 2.07e-03 \n", + " 2 3 6.7858e-05 1.12e-05 4.85e-03 2.37e-05 \n", + " 3 4 6.7856e-05 1.49e-09 5.67e-05 9.88e-09 \n", + "`gtol` termination condition is satisfied.\n", + "Function evaluations 4, initial cost 1.2674e-03, final cost 6.7856e-05, first-order optimality 9.88e-09.\n", + "CPU times: user 52.7 ms, sys: 74 µs, total: 52.8 ms\n", + "Wall time: 16.8 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "initial_kij = [0.0] # \n", + "fitted_kij_mu = least_squares(cost, initial_kij, bounds=[-0.5, 0.5], args=(estimator_mu,), verbose=2).x" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c04615cb-807c-4fa2-9dfe-279d18f24983", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_comparison(data, fitted_kij_mu[0])" + ] + }, + { + "cell_type": "markdown", + "id": "5dce7aeb-26f9-43fb-b49d-4bd7ae5e2a2c", + "metadata": {}, + "source": [ + "## Difference in pressure given $\\{T, p, x_i\\}$ or $\\{T, p, y_i\\}$\n", + "\n", + "`DataSet.binary_vle_pressure` uses temperatures, pressures, mole fractions and a flag for the phase (`Phase.Liquid` or `Phase.Vapor`) as input. Depending on the phase it calculates the dew or bubble pressure for each data point. The cost is the difference between the dew/bubble pressure and the provided (input) pressure.\n", + "\n", + "Since we have information about both phases in our experimental data, we can construct 6 `DataSet`s (3 isotherms for 2 phases). Alternatively, we could have splitted the data into two `DataSet`s, one for each phase." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4e6f9a43-cd47-4996-81de-78147b8af713", + "metadata": {}, + "outputs": [], + "source": [ + "isotherms = [\n", + " [\n", + " DataSet.binary_vle_pressure(\n", + " np.array([temperature]*len(isotherm)) *KELVIN, \n", + " isotherm.p.values * BAR, \n", + " isotherm.x1.values,\n", + " Phase.Liquid\n", + " ),\n", + " DataSet.binary_vle_pressure(\n", + " np.array([temperature]*len(isotherm)) *KELVIN, \n", + " isotherm.p.values * BAR, \n", + " isotherm.y1.values,\n", + " Phase.Vapor\n", + " ),\n", + " ]\n", + " for temperature, isotherm in data.groupby('t')\n", + "]\n", + "\n", + "from itertools import chain\n", + "estimator_p = Estimator(list(chain.from_iterable(isotherms)), weights=[1]*6, losses=[Loss.linear()]*6)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "157a03af-7d98-479d-b44c-a79f6d737c2d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 2.2123e-04 3.56e-03 \n", + " 1 2 8.2939e-06 2.13e-04 5.17e-02 1.51e-04 \n", + " 2 3 8.1416e-06 1.52e-07 1.13e-03 1.64e-06 \n", + " 3 4 8.1416e-06 2.73e-11 1.54e-05 4.04e-08 \n", + " 4 5 8.1416e-06 1.29e-14 3.10e-07 2.78e-09 \n", + "`gtol` termination condition is satisfied.\n", + "Function evaluations 5, initial cost 2.2123e-04, final cost 8.1416e-06, first-order optimality 2.78e-09.\n", + "CPU times: user 2.96 s, sys: 75.1 ms, total: 3.03 s\n", + "Wall time: 866 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "initial_kij = [0.0] # \n", + "fitted_kij_p = least_squares(cost, initial_kij, bounds=[-0.5, 0.5], args=(estimator_p,), verbose=2).x" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8833ef48-c0aa-420c-8f2a-a7e920946d7f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_comparison(data, fitted_kij_p[0])" + ] + }, + { + "cell_type": "markdown", + "id": "1512c6fb-1727-48a3-a8e2-c724978c7662", + "metadata": {}, + "source": [ + "# Evaluating the results\n", + "\n", + "We end up with 3 slightly different values for $k_{ij}$.\n", + "Note that comparing the MARD values of the three different ways we created `DataSet`s is not very informative since each contains a different property that is predicted. E.g. the MARD of the chemical potential cost function contains the differences of chemical potentials of both phases and compares these values to zero. Finally, note that the MARD is not the metric that is minimized." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "815c48a9-702d-4dc8-8ee0-4cd4b27a92f2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adjusted k_ij parameters and MARDs\n", + "MARD (distance, k_ij = 0.05082) = 1.302 %\n", + "MARD (chem. pot., k_ij = 0.05048) = 6.181 %\n", + "MARD (pressure, k_ij = 0.05056) = 3.092 %\n" + ] + } + ], + "source": [ + "print(\"Adjusted k_ij parameters and MARDs\")\n", + "\n", + "mard_distance = estimator.mean_absolute_relative_difference(eos_from_kij(fitted_kij)) * 100\n", + "mard_mu = estimator_mu.mean_absolute_relative_difference(eos_from_kij(fitted_kij_mu)) * 100\n", + "mard_p = estimator_p.mean_absolute_relative_difference(eos_from_kij(fitted_kij_p)) * 100\n", + "print(f\"MARD (distance, k_ij = {fitted_kij[0]:>6.4}) = {mard_distance.mean():>8.4} %\")\n", + "print(f\"MARD (chem. pot., k_ij = {fitted_kij_mu[0]:>6.4}) = {mard_mu.mean():>8.4} %\")\n", + "print(f\"MARD (pressure, k_ij = {fitted_kij_p[0]:>6.4}) = {mard_p.mean():>8.4} %\")" + ] + }, + { + "cell_type": "markdown", + "id": "20d1f5b9-fc65-49c2-8eac-bbd07c662e70", + "metadata": {}, + "source": [ + "# Summary\n", + "\n", + "- The `Estimator` object in FeO$_\\text{s}$ allows the collection of `DataSet` objects for adjusting parameters.\n", + " - The `Estimator` takes a list of `DataSet` objects, weights, and `Loss` objects as inputs.\n", + " - It calculates the cost of a model where the cost function can be different for each `DataSet`.\n", + "- To work with `scipy`'s `least_squares` solver, a cost function is required.\n", + " - Two functions, `eos_from_kij` and `cost`, are built for this purpose.\n", + " - `eos_from_kij` constructs the parameters and equation of state for the current $k_{ij}$ value.\n", + " - `cost` calculates and returns the cost of the current model based on the parameters and estimator.\n", + "- An initial parameter guess and bounds are necessary for parameter adjustment.\n", + "- The `Estimator.mean_absolute_relative_difference` is probably is not the most instructive metric to judge the quality of the adjusted parameter. It's straight forward to calculate MARDs of composition or pressure/temperature with FeO$_\\text{s}$ which can be used to get an idea of the quality of the adjustment." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/pcsaft/parameter_adjustment/adjust_non_polar_non_asssociating.ipynb b/examples/pcsaft/parameter_adjustment/adjust_non_polar_non_asssociating.ipynb new file mode 100644 index 000000000..99a97ca78 --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/adjust_non_polar_non_asssociating.ipynb @@ -0,0 +1,434 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d2e9adfb-9962-40f7-8265-4861621e757e", + "metadata": {}, + "source": [ + "# Adjusting PC-SAFT parameters for a non-associating, non-polar substance" + ] + }, + { + "cell_type": "markdown", + "id": "4b54ad7f-d2ee-478c-8dd3-aebb2addec81", + "metadata": {}, + "source": [ + "## Goal\n", + "\n", + "- Read in experimental data for vapor pressure and liquid density of a pure substance.\n", + "- Use the `DataSet`, `Loss` and `Estimator` objects to store and work with experimental data.\n", + "- Define a `cost` function that will be used with `scipy.optimize.least_squares`.\n", + "- Run the optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "805bdfdb-d397-45a3-8354-082a8d13e4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.optimize import least_squares\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from feos.si import BAR, KELVIN, KILOGRAM, METER\n", + "from feos.eos import EquationOfState, PhaseDiagram\n", + "from feos.pcsaft import Identifier, PcSaftParameters, PcSaftRecord, PureRecord\n", + "from feos.eos.estimator import Estimator, Loss, DataSet\n", + "\n", + "sns.set_context('talk')\n", + "sns.set_palette('Dark2')\n", + "sns.set_style('ticks')\n", + "colors = sns.palettes.color_palette('Dark2', 5)" + ] + }, + { + "cell_type": "markdown", + "id": "46c5a891-be8b-44d9-8f42-c84adf0cadb4", + "metadata": {}, + "source": [ + "# `DataSet` objects\n", + "\n", + "FeO$_\\text{s}$ provides a range of data structures that facilitate the adjustment of parameters. One such structure is the `DataSet`, which serves as a storage unit for experimental data. When working with a specific model, a `DataSet` enables the evaluation of a `cost` function. How this cost function is defined, depends on the property that you want to predict with your equation of state. In this notebook, we use vapor pressures and liquid densities and the cost functions are defined as the relative difference between the experimental data and the model prediction.\n", + "\n", + "A DataSet encompasses the following components:\n", + "\n", + "- The `target`: This refers to the experimental data associated with the property for which we intend to adjust parameters. In our case, these properties include vapor pressures and liquid densities. Additional options consist of dynamic properties used to adjust correlation parameters for entropy scaling or VLE (Vapor-Liquid Equilibrium) data of mixtures to fine-tune binary interaction parameters.\n", + "- Other properties: These are necessary for determining the thermodynamic conditions. For instance, temperature is required for vapor pressure calculations, while liquid density computations necessitate temperature and pressure.\n", + "- Each property available in FeO$_\\text{s}$ is accompanied by a corresponding DataSet constructor.\n", + "\n", + "Below, we load (pseudo) experimental data for hexane's vapor pressures and liquid densities. The data, taken from the NIST WebBook, incorporates simulated statistical uncertainties (e.g., measurement errors) by introducing Gaussian noise." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3c80cd76-4868-4b92-a654-287c7d65b875", + "metadata": {}, + "outputs": [], + "source": [ + "# read data from file into DataFrame\n", + "data_psat = pd.read_csv(\"data/hexane_vapor_pressure.csv\")\n", + "# construct a `DataSet` for vapor pressure\n", + "dataset_psat = DataSet.vapor_pressure(\n", + " target=data_psat[\"vapor_pressure / bar\"].values * BAR,\n", + " temperature=data_psat[\"temperature / K\"].values * KELVIN,\n", + " extrapolate=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "30f51ce6-a910-4e6f-93d2-7c02d070143e", + "metadata": {}, + "source": [ + "For `DataSet.vapor_pressure` we have to supply the experimental data for vapor pressures and temperatures as input.\n", + "\n", + "Optional parameters are\n", + "- `extrapolate` which allows an extrapolation for experimental data above the model's critical temperature (using an Antoine-like equation),\n", + "- `critical_temperature` when the experimental critical temperature is known,\n", + "- `max_iter` to set the maximum number of iterations for the VLE solver, and\n", + "- `verbosity` to print the solver iterations to the terminal." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "981aab8f-bd41-4939-a27a-02223c5a5ff0", + "metadata": {}, + "outputs": [], + "source": [ + "# read data from file into DataFrame\n", + "data_rhol = pd.read_csv(\"data/hexane_liquid_density.csv\")\n", + "# construct a `DataSet` for liquid density\n", + "dataset_rhol = DataSet.liquid_density(\n", + " target=data_rhol[\"density / kg/m3\"].values * KILOGRAM / METER**3,\n", + " temperature=data_rhol[\"temperature / K\"].values * KELVIN,\n", + " pressure=data_rhol[\"pressure / bar\"].values * BAR\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "53e754f2-6a6f-415b-87f7-8a35e0c7d61b", + "metadata": {}, + "source": [ + "For `DataSet.liquid_density` we have to supply the experimental data for liquid mass densities, temperatures and pressures as input." + ] + }, + { + "cell_type": "markdown", + "id": "65c565d7-30a4-446a-8e22-0c225edeb88f", + "metadata": {}, + "source": [ + "# `Estimator` and `Loss` objects" + ] + }, + { + "cell_type": "markdown", + "id": "89312d88-4eba-4649-af06-a11d673a88b9", + "metadata": {}, + "source": [ + "To collect the `DataSet` objects for the properties we wish to adjust parameters for, we can assemble them into an `Estimator` object. The `Estimator` requires the following inputs:\n", + "\n", + "- A list of `DataSet` objects.\n", + "- A corresponding list of `weights`, with each weight assigned to a specific `DataSet`.\n", + "- A list of `losses`, where each `DataSet` has an associated loss function.\n", + "\n", + "The `Estimator` facilitates the calculation of the model's `cost`, which involves the following steps:\n", + "\n", + "1. Iterating through all `DataSets`: For each `DataSet`, the relative difference between the model's prediction and the experimental data is evaluated.\n", + "2. Application of a `Loss` function: The available `Loss` functions in FeO$_\\text{s}$ are identical to those found in [`scipy.optimize.least_squares`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.least_squares.html). Each property can have a different `Loss`. If `Loss.linear()` is used, the optimization simplifies to a regular least-squares problem.\n", + "3. Normalization: The relative differences (with the applied loss functions) are divided by the number of data points in each corresponding `DataSet`.\n", + "4. Weighted cost calculation: The costs of each `DataSet` are weighted based on the provided (normalized) `weights`.\n", + "\n", + "The following example demonstrates the construction of an estimator using vapor pressure and liquid density data. We utilize `weights = [3, 2]` (normalized `weights = [0.6, 0.4]`) and a `Loss.huber(0.05)` loss function, which treats predictions above 5% linearly in the cost function instead of squaring them (outlier treatment).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2e4c20fb-2415-43ac-87c4-68279dcb4e7d", + "metadata": {}, + "outputs": [], + "source": [ + "estimator = Estimator(\n", + " data=[dataset_psat, dataset_rhol],\n", + " weights=[3, 2],\n", + " losses=[Loss.huber(0.05), Loss.huber(0.05)]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "c49e1f8a-93f5-4981-b7ea-410b651058c8", + "metadata": {}, + "source": [ + "# Defining a cost function\n", + "\n", + "When using `scipy`'s `least_squares` solver, it requires a function to calculate the cost or residuals. The first argument of this function must be the parameter vector that's being optimized. Therefore, it is necessary to define this function in Python before working with `least_squares`.\n", + "\n", + "To simplify the process, we create two functions:\n", + "\n", + "- `eos_from_parameters`: This function constructs the parameters and equation of state based on the current parameter vector. Since FeO$_\\text{s}$ does not allow mutation of an existing `EquationOfState` object, generating a new equation of state is necessary. We can use this function later to generate the equation of state for the final parameters.\n", + "- `cost`: Taking the parameters and estimator as inputs, this function builds the equation of state, calculates the cost of the current model, and returns the result.\n", + "\n", + "These functions aid in the seamless integration of the solver, allowing for the generation of the equation of state and the calculation of the model's cost." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a61f8330-e31c-4d97-943d-6abe9fad9f1b", + "metadata": {}, + "outputs": [], + "source": [ + "# define things that are constant during optimization\n", + "identifier = Identifier(\n", + " cas=\"110-54-3\", \n", + " name=\"hexane\", \n", + " iupac_name=\"hexane\", \n", + " smiles=\"CCCCCC\", \n", + " inchi=\"InChI=1/C6H14/c1-3-5-6-4-2/h3-6H2,1-2H3\", \n", + " formula=\"C6H14\"\n", + ")\n", + "molarweight = 86.177 # g / mol\n", + "\n", + "def eos_from_parameters(p):\n", + " \"\"\"Returns equation of state (PC-SAFT) for current parameters.\"\"\"\n", + " global identifier, molarweight\n", + " m, sigma, epsilon_k = p\n", + " model_record = PcSaftRecord(m, sigma, epsilon_k)\n", + " pure_record = PureRecord(identifier, molarweight, model_record)\n", + " parameters = PcSaftParameters.new_pure(pure_record)\n", + " return EquationOfState.pcsaft(parameters)\n", + "\n", + "def cost(p, estimator):\n", + " \"\"\"Calculates cost function for current parameters.\"\"\"\n", + " return estimator.cost(eos_from_parameters(p))" + ] + }, + { + "cell_type": "markdown", + "id": "b3d9f5f9-77ff-4523-a3ec-d7a3c05b829a", + "metadata": {}, + "source": [ + "# Adjust parameters\n", + "\n", + "To begin parameter adjustment, there are two additional requirements:\n", + "\n", + "1. An initial guess for the parameters.\n", + "2. Bounds for the parameters.\n", + "\n", + "It is crucial to note that trying multiple combinations of initial parameters is recommended to avoid getting stuck in a local minimum.\n", + "\n", + "Once these prerequisites are fulfilled, we can invoke `least_squares` with `args=(estimator, )` as an argument for the `cost` function. Please note that the tuple syntax is necessary in this case." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1309b82d-dd20-4e9c-987c-03167cf4a7b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 9.6023e-05 1.11e-04 \n", + " 1 2 4.1622e-05 5.44e-05 5.08e+01 1.34e-03 \n", + " 2 3 6.2580e-06 3.54e-05 3.32e+00 1.84e-04 \n", + " 3 4 3.4028e-06 2.86e-06 1.40e+00 6.00e-06 \n", + " 4 5 3.2495e-06 1.53e-07 4.42e+00 5.86e-05 \n", + " 5 6 3.2206e-06 2.88e-08 1.05e+00 1.94e-05 \n", + " 6 7 3.2167e-06 3.91e-09 4.65e-01 5.20e-06 \n", + " 7 8 3.2164e-06 3.01e-10 1.33e-01 1.28e-06 \n", + " 8 9 3.2164e-06 1.82e-11 3.21e-02 3.01e-07 \n", + " 9 10 3.2164e-06 1.02e-12 7.61e-03 6.80e-08 \n", + " 10 11 3.2164e-06 5.45e-14 1.77e-03 1.54e-08 \n", + " 11 12 3.2164e-06 2.93e-15 4.13e-04 3.49e-09 \n", + "`gtol` termination condition is satisfied.\n", + "Function evaluations 12, initial cost 9.6023e-05, final cost 3.2164e-06, first-order optimality 3.49e-09.\n", + "CPU times: user 2.92 s, sys: 62 ms, total: 2.98 s\n", + "Wall time: 802 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "initial_parameters = [3.0, 3.0, 300.0] # m, sigma, epsilon_k\n", + "bounds = ([2.0, 2.0, 150.0], [8.0, 5.0, 500.0]) # ([lower bounds], [upper bounds])\n", + "fitted_parameters = least_squares(cost, initial_parameters, bounds=bounds, args=(estimator,), verbose=2).x" + ] + }, + { + "cell_type": "markdown", + "id": "c7810262-d26d-4a5a-8d3b-5b1d217a9eb5", + "metadata": {}, + "source": [ + "To provide statistics during the adjustment process, we can utilize the `verbose=2` option, which prints relevant information. However, our primary interest lies in obtaining the optimal parameters. These parameters can be accessed from the `x` field of the `OptimizeResult` object generated by the `least_squares` function.\n", + "\n", + "Once the adjustment is complete, we can investigate the results. A quick and straightforward method for analyzing the optimization results is to use the `Estimator.mean_absolute_relative_difference` method. This method returns the mean absolute relative difference (MARD) for each `DataSet`, without applying losses or weights. It is important to exercise caution when dealing with `NaN` values, as any predictions resulting in `NaN` are filtered out and thus not immediately visible in the reported values.\n", + "\n", + "It's essential to note that the resulting MARD **does not include** an evaluation of the loss functions or weights. Therefore, it does not equal the property that is minimized in the optimization process." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b266f557-40f5-43d6-82eb-f5c393a3b464", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adjusted parameters\n", + "m = 3.024\n", + "sigma = 3.811 A\n", + "epsilon_k = 238.333 K\n", + "\n", + "MARD (including outliers)\n", + "p_sat = 6.3 %\n", + "rho_l = 0.93 %\n" + ] + } + ], + "source": [ + "print(\"Adjusted parameters\")\n", + "print(\"m = {:>8.4}\".format(fitted_parameters[0]))\n", + "print(\"sigma = {:>8.4} A\".format(fitted_parameters[1]))\n", + "print(\"epsilon_k = {:>8.6} K\".format(fitted_parameters[2]))\n", + "print(\"\")\n", + "\n", + "mard = estimator.mean_absolute_relative_difference(eos_from_parameters(fitted_parameters)) * 100\n", + "print(\"MARD (including outliers)\")\n", + "print(\"p_sat = {:<4.2} %\".format(mard[0]))\n", + "print(\"rho_l = {:<4.2} %\".format(mard[1]))" + ] + }, + { + "cell_type": "markdown", + "id": "342179f3-ca31-4ecf-8fa6-b58680ffd697", + "metadata": {}, + "source": [ + "# Plot resuts\n", + "\n", + "We can now use our results and calcuate the phase diagram and have a visual inspection of our parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9a75d38a-8f73-402a-9558-e5f3582e982d", + "metadata": {}, + "outputs": [], + "source": [ + "phase_diagram = PhaseDiagram.pure(eos_from_parameters(fitted_parameters), 250.0 * KELVIN, 201)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f8444e44-ca81-42f5-be85-543640490d89", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 2, figsize=(15, 6))\n", + "ax[0].set_title(\"saturation pressure of hexane\")\n", + "\n", + "sns.lineplot(\n", + " y=phase_diagram.vapor.pressure / BAR,\n", + " x=1.0/phase_diagram.vapor.temperature * KELVIN,\n", + " ax=ax[0]\n", + ")\n", + "sns.scatterplot(\n", + " x=1.0 / data_psat[\"temperature / K\"], \n", + " y=data_psat[\"vapor_pressure / bar\"], \n", + " ax=ax[0],\n", + " color=colors[1]\n", + ")\n", + "ax[0].set_yscale('log')\n", + "ax[0].set_xlabel(r'$\\frac{1}{T}$ / K$^{-1}$');\n", + "ax[0].set_ylabel(r'$p$ / bar');\n", + "#ax[0].set_xlim()\n", + "#ax[0].set_ylim()\n", + "\n", + "ax[1].set_title(r\"$T$-$\\rho$-diagram of hexane\")\n", + "sns.lineplot(\n", + " y=phase_diagram.vapor.temperature / KELVIN,\n", + " x=phase_diagram.vapor.mass_density / KILOGRAM * METER**3,\n", + " ax=ax[1],\n", + " color=colors[0]\n", + ")\n", + "sns.lineplot(\n", + " y=phase_diagram.liquid.temperature / KELVIN,\n", + " x=phase_diagram.liquid.mass_density / KILOGRAM * METER**3,\n", + " ax=ax[1],\n", + " color=colors[0]\n", + ")\n", + "\n", + "ax[1].set_ylabel(r'$T$ / K');\n", + "ax[1].set_xlabel(r'$\\rho$ / kg m$^{-3}$');" + ] + }, + { + "cell_type": "markdown", + "id": "96c715a3-dd27-4afd-a146-c5c516e43ce7", + "metadata": {}, + "source": [ + "# Summary\n", + "\n", + "- The `Estimator` object in FeO$_\\text{s}$ allows the collection of `DataSet` objects for adjusting parameters.\n", + " - The `Estimator` takes a list of `DataSet` objects, weights, and `Loss` objects as inputs.\n", + " - In our example, it calculates the cost of a model by evaluating the relative difference between the model's prediction and experimental data in each `DataSet`.\n", + "- To work with `scipy`'s `least_squares` solver, a cost function is required.\n", + " - Two functions, `eos_from_parameters` and `cost`, are built for this purpose.\n", + " - `eos_from_parameters` constructs the parameters and equation of state for the current parameter vector.\n", + " - `cost` calculates and returns the cost of the current model based on the parameters and estimator.\n", + "- Initial parameter guesses and parameter bounds are necessary for parameter adjustment.\n", + " - Checking multiple combinations of initial parameters is recommended to avoid local minima (not shown in this notebook).\n", + "- In this example, the `Estimator.mean_absolute_relative_difference` method provides the mean absolute relative difference (MARD) for each `DataSet`, without applying losses or weights.\n", + " - The resulting MARD does not include the effects of loss functions or weights and does not represent the minimized property." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/pcsaft/parameter_adjustment/adjust_viscosity_correlation.ipynb b/examples/pcsaft/parameter_adjustment/adjust_viscosity_correlation.ipynb new file mode 100644 index 000000000..c7374a26e --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/adjust_viscosity_correlation.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d2e9adfb-9962-40f7-8265-4861621e757e", + "metadata": {}, + "source": [ + "# Adjusting correlation parameters for entropy scaling of viscosity" + ] + }, + { + "cell_type": "markdown", + "id": "4b54ad7f-d2ee-478c-8dd3-aebb2addec81", + "metadata": {}, + "source": [ + "## Goal\n", + "\n", + "- Read in experimental data for viscosity of a pure substance.\n", + "- Use the `DataSet`, `Loss` and `Estimator` objects to store and work with experimental data.\n", + "- Define a `cost` function that will be used with `scipy.optimize.least_squares`.\n", + "- Run the optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "805bdfdb-d397-45a3-8354-082a8d13e4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.optimize import least_squares\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from feos.si import BAR, KELVIN, KILOGRAM, METER, MILLI, PASCAL, SECOND, RGAS\n", + "from feos.eos import EquationOfState, State, Contributions\n", + "from feos.pcsaft import Identifier, PcSaftParameters, PcSaftRecord, PureRecord\n", + "from feos.eos.estimator import Estimator, Loss, DataSet, Phase\n", + "\n", + "sns.set_context('talk')\n", + "sns.set_palette('Dark2')\n", + "sns.set_style('ticks')\n", + "colors = sns.palettes.color_palette('Dark2', 5)\n", + "plt.rcParams['figure.figsize'] = [12,7]" + ] + }, + { + "cell_type": "markdown", + "id": "46c5a891-be8b-44d9-8f42-c84adf0cadb4", + "metadata": {}, + "source": [ + "# `DataSet` objects\n", + "\n", + "FeO$_\\text{s}$ provides a range of data structures that facilitate the adjustment of parameters. One such structure is the `DataSet`, which serves as a storage unit for experimental data. When working with a specific model, a `DataSet` enables the evaluation of a `cost` function. How this cost function is defined depends on the property that you want to predict with your equation of state. In this notebook, we use the viscosity where the cost function is the relative difference between the experimental data and the model prediction.\n", + "\n", + "A DataSet encompasses the following components:\n", + "\n", + "- The `target`: This refers to the experimental data associated with the property for which we intend to adjust parameters. In our case, this is the viscosity.\n", + "- Other properties: These are necessary for determining the thermodynamic conditions. For instance, temperature is required for vapor pressure calculations, while liquid density computations necessitate temperature and pressure. For the viscosity, we use pressure, temperature and the phase (liquid or vapor) as input.\n", + "- Each property available in FeO$_\\text{s}$ is accompanied by a corresponding DataSet constructor." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3c80cd76-4868-4b92-a654-287c7d65b875", + "metadata": {}, + "outputs": [], + "source": [ + "# read data from file into DataFrame\n", + "data = pd.read_csv(\"data/hexane_viscosity.csv\")\n", + "# map strings for phase to Phase objects\n", + "phase = [Phase.Vapor if p == 'vapor' else Phase.Liquid for p in data.phase]\n", + "\n", + "# construct a `DataSet` for vapor pressure\n", + "dataset = DataSet.viscosity(\n", + " target=data[\"viscosity / mPas\"].values * MILLI * PASCAL * SECOND,\n", + " temperature=data[\"temperature / K\"].values * KELVIN,\n", + " pressure=data[\"pressure / bar\"].values * BAR,\n", + " phase=phase\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "30f51ce6-a910-4e6f-93d2-7c02d070143e", + "metadata": {}, + "source": [ + "For `DataSet.viscosity` we have to supply the experimental data for viscosity, temperature, and pressure.\n", + "\n", + "Optionally, a list of `Phase` objects can be supplied (via the `phase` argument) in which case not the stable phase is calculated for given temperature and pressure but the possibly instable phase according to the input phase." + ] + }, + { + "cell_type": "markdown", + "id": "65c565d7-30a4-446a-8e22-0c225edeb88f", + "metadata": {}, + "source": [ + "# `Estimator` and `Loss` objects" + ] + }, + { + "cell_type": "markdown", + "id": "89312d88-4eba-4649-af06-a11d673a88b9", + "metadata": {}, + "source": [ + "To collect the `DataSet` objects for the properties we wish to adjust parameters for, we can assemble them into an `Estimator` object. The `Estimator` requires the following inputs:\n", + "\n", + "- A list of `DataSet` objects.\n", + "- A corresponding list of `weights`, with each weight assigned to a specific `DataSet`.\n", + "- A list of `losses`, where each `DataSet` has an associated loss function.\n", + "\n", + "In our case, there is only a single `DataSet` so we can ignore the `weights`. Since our data comes from a correlation (from the NIST WebBook), we don't need a loss function." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2e4c20fb-2415-43ac-87c4-68279dcb4e7d", + "metadata": {}, + "outputs": [], + "source": [ + "estimator = Estimator(data=[dataset],weights=[1],losses=[Loss.linear()])" + ] + }, + { + "cell_type": "markdown", + "id": "c49e1f8a-93f5-4981-b7ea-410b651058c8", + "metadata": {}, + "source": [ + "# Defining a cost function\n", + "\n", + "When using `scipy`'s `least_squares` solver, it requires a function to calculate the cost or residuals. The first argument of this function must be the parameter vector that's being optimized. Therefore, it is necessary to define this function in Python before working with `least_squares`.\n", + "\n", + "To simplify the process, we create two functions:\n", + "\n", + "- `eos_from_parameters`: This function constructs the parameters and equation of state based on the current parameter vector. Since FeO$_\\text{s}$ does not allow mutation of an existing `EquationOfState` object, generating a new equation of state is necessary. We can use this function later to generate the equation of state for the final parameters.\n", + "- `cost`: Taking the parameters and estimator as inputs, this function builds the equation of state, calculates the cost of the current model, and returns the result.\n", + "\n", + "These functions aid in the seamless integration of the solver, allowing for the generation of the equation of state and the calculation of the model's cost." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8002fc42-49dd-4166-b85e-7c96f567fa8d", + "metadata": {}, + "outputs": [], + "source": [ + "# extract PC-SAFT parameters, identifier and molarweight, which are kept constant during optimization\n", + "hexane = PcSaftParameters.from_json([\"hexane\"], \"../../../parameters/pcsaft/esper2023.json\").pure_records[0]\n", + "identifier = hexane.identifier\n", + "saft = hexane.model_record\n", + "mw = hexane.molarweight\n", + "m, sigma, epsilon_k = saft.m, saft.sigma, saft.epsilon_k\n", + "\n", + "def eos_from_parameters(c):\n", + " \"\"\"Returns equation of state (PC-SAFT) for current parameters.\"\"\"\n", + " global m, sigma, epsilon_k, identifier, mw\n", + " model_record = PcSaftRecord(m, sigma, epsilon_k, viscosity=c)\n", + " pure_record = PureRecord(identifier, mw, model_record)\n", + " parameters = PcSaftParameters.from_records([pure_record])\n", + " return EquationOfState.pcsaft(parameters)\n", + "\n", + "def cost(p, estimator):\n", + " \"\"\"Calculates cost function for current parameters.\"\"\"\n", + " return estimator.cost(eos_from_parameters(p))" + ] + }, + { + "cell_type": "markdown", + "id": "b3d9f5f9-77ff-4523-a3ec-d7a3c05b829a", + "metadata": {}, + "source": [ + "# Adjust parameters\n", + "\n", + "To begin parameter adjustment, there are two additional requirements:\n", + "\n", + "1. An initial guess for the parameters.\n", + "2. Bounds for the parameters.\n", + "\n", + "It is crucial to note that trying multiple combinations of initial parameters is recommended to avoid getting stuck in a local minimum.\n", + "\n", + "Once these prerequisites are fulfilled, we can invoke `least_squares` with `args=(estimator, )` as an argument for the `cost` function. Please note that the tuple syntax is necessary in this case." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1309b82d-dd20-4e9c-987c-03167cf4a7b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 4.7163e-03 6.45e-03 \n", + " 1 2 4.5509e-04 4.26e-03 1.00e+00 2.23e-03 \n", + " 2 3 1.6840e-05 4.38e-04 1.75e+00 2.57e-04 \n", + " 3 4 1.6086e-07 1.67e-05 1.21e+00 1.39e-05 \n", + " 4 5 8.4360e-08 7.65e-08 2.34e-01 7.53e-08 \n", + " 5 6 8.4357e-08 3.66e-12 4.59e-03 2.38e-11 \n", + "`gtol` termination condition is satisfied.\n", + "Function evaluations 6, initial cost 4.7163e-03, final cost 8.4357e-08, first-order optimality 2.38e-11.\n", + "CPU times: user 227 ms, sys: 12.2 ms, total: 239 ms\n", + "Wall time: 75.9 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "initial_parameters = [0.0]*4 \n", + "fitted_parameters = least_squares(cost, initial_parameters, args=(estimator,), verbose=2).x" + ] + }, + { + "cell_type": "markdown", + "id": "c7810262-d26d-4a5a-8d3b-5b1d217a9eb5", + "metadata": {}, + "source": [ + "To provide statistics during the adjustment process, we can utilize the `verbose=2` option, which prints relevant information. However, our primary interest lies in obtaining the optimal parameters. These parameters can be accessed from the `x` field of the `OptimizeResult` object generated by the `least_squares` function.\n", + "\n", + "Once the adjustment is complete, we can investigate the results. A quick and straightforward method for analyzing the optimization results is to use the `Estimator.mean_absolute_relative_difference` method. This method returns the mean absolute relative difference (MARD) for each `DataSet`, without applying losses or weights. It is important to exercise caution when dealing with `NaN` values, as any predictions resulting in `NaN` are filtered out and thus not immediately visible in the reported values.\n", + "\n", + "It's essential to note that the resulting MARD **does not include** an evaluation of the loss functions or weights. Therefore, it may not equal the property that is minimized in the optimization process." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b266f557-40f5-43d6-82eb-f5c393a3b464", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adjusted correlation parameters\n", + "c = [-1.20010418 -2.15742129 0.24509735 0.21828781]\n", + "MARD = 0.2038 %\n" + ] + } + ], + "source": [ + "print(\"Adjusted correlation parameters\")\n", + "print(\"c = {}\".format(fitted_parameters))\n", + "\n", + "mard = estimator.mean_absolute_relative_difference(eos_from_parameters(fitted_parameters)) * 100\n", + "print(\"MARD = {:<5.4} %\".format(mard[0]))" + ] + }, + { + "cell_type": "markdown", + "id": "342179f3-ca31-4ecf-8fa6-b58680ffd697", + "metadata": {}, + "source": [ + "# Plot resuts\n", + "\n", + "We can now use our results and calcuate the phase diagram and have a visual inspection of our parameters. Here, we calculate the reduced logarithmic viscosity to use the entropy scaled depiction." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4569e7a0-54ec-4fb7-b735-1dbb4dca268a", + "metadata": {}, + "outputs": [], + "source": [ + "fitted_eos = eos_from_parameters(fitted_parameters)\n", + "results = []\n", + "for _, (t, p, viscosity, phase) in data.iterrows():\n", + " s = State(fitted_eos, temperature=t*KELVIN, pressure=p*BAR, density_initialization=phase)\n", + " results.append({\n", + " 's_res': s.molar_entropy(Contributions.Residual) / RGAS / m,\n", + " 'ln_eta_nist': np.log(viscosity * MILLI * PASCAL * SECOND / s.viscosity_reference()),\n", + " 'ln_eta_saft': s.ln_viscosity_reduced(),\n", + " 'temperature': t,\n", + " 'pressure': p,\n", + " })\n", + " \n", + "# collect into DataFrame\n", + "results_df = pd.DataFrame(results)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "90dca269-a213-4b2b-aff2-f006b4f522e2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(\n", + " data=results_df, x='s_res', y='ln_eta_nist', \n", + " color=colors[0], label='NIST'\n", + ")\n", + "sns.lineplot(\n", + " data=results_df, x='s_res', y='ln_eta_saft', \n", + " color=colors[1], label='entropy scaling'\n", + ")\n", + "\n", + "plt.xlabel(r\"$s^\\text{res}(T, \\rho) / R / m$\")\n", + "plt.ylabel(r\"$\\ln\\frac{\\eta}{\\eta_\\text{CE}}$\")\n", + "plt.legend(frameon=False);" + ] + }, + { + "cell_type": "markdown", + "id": "96c715a3-dd27-4afd-a146-c5c516e43ce7", + "metadata": {}, + "source": [ + "# Summary\n", + "\n", + "- The `Estimator` object in FeO$_\\text{s}$ allows the collection of `DataSet` objects for adjusting parameters.\n", + " - The `Estimator` takes a list of `DataSet` objects, weights, and `Loss` objects as inputs.\n", + " - For `DataSet.viscosity`, it calculates the cost of a model by evaluating the relative difference between the model's prediction and experimental data in each `DataSet`.\n", + "- To work with `scipy`'s `least_squares` solver, a cost function is required.\n", + " - Two functions, `eos_from_parameters` and `cost`, are built for this purpose.\n", + " - `eos_from_parameters` constructs the parameters and equation of state for the current parameter vector.\n", + " - `cost` calculates and returns the cost of the current model based on the parameters and estimator.\n", + "- Initial parameter guesses and parameter bounds are necessary for parameter adjustment.\n", + " - Checking multiple combinations of initial parameters is recommended to avoid local minima (not shown in this notebook).\n", + "- For `DataSet.viscosity`, the `Estimator.mean_absolute_relative_difference` method provides the mean absolute relative difference (MARD) without applying weights or losses." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/pcsaft/parameter_adjustment/data/binary_vle.csv b/examples/pcsaft/parameter_adjustment/data/binary_vle.csv new file mode 100644 index 000000000..dfc1994b4 --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/data/binary_vle.csv @@ -0,0 +1,52 @@ +p x1 y1 t source +0.2061 0.018 0.227 318.1 https://doi.org/10.1051/jcp/1973700843 +0.229 0.043 0.313 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2554 0.14 0.4 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2557 0.152 0.406 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2717 0.3328 0.481 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2756 0.415 0.495 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2766 0.492 0.509 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2761 0.5125 0.5125 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2761 0.514 0.513 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2748 0.62 0.537 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2734 0.658 0.547 318.1 https://doi.org/10.1051/jcp/1973700843 +0.273 0.666 0.554 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2716 0.703 0.56 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2694 0.73 0.579 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2661 0.774 0.589 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2525 0.854 0.654 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2492 0.874 0.67 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2401 0.902 0.707 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2336 0.922 0.733 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2161 0.955 0.811 318.1 https://doi.org/10.1051/jcp/1973700843 +0.2817 0.0066 0.1004 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3415 0.0259 0.2692 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3982 0.0797 0.3897 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.432 0.1739 0.4458 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4496 0.2737 0.4834 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4593 0.3859 0.5189 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4595 0.7036 0.6005 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4496 0.7922 0.6336 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4321 0.8649 0.6921 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4314 0.8665 0.6944 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4158 0.9051 0.7387 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3973 0.9365 0.7871 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3779 0.9586 0.8465 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3608 0.9754 0.8953 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3463 0.9883 0.9397 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.3362 0.9958 0.9799 330.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.4057 0.008 0.1065 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.5792 0.0873 0.392 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6375 0.1646 0.4641 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6679 0.2636 0.5048 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6863 0.3782 0.5358 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6953 0.4823 0.5642 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6984 0.5955 0.5963 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6952 0.6949 0.6224 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6843 0.7882 0.6624 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6422 0.896 0.7543 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.6185 0.9299 0.7998 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.5936 0.951 0.8537 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.5697 0.9721 0.9054 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.5495 0.986 0.9498 340.0 https://doi.org/10.1016/j.jct.2011.09.007 +0.5346 0.9956 0.9804 340.0 https://doi.org/10.1016/j.jct.2011.09.007 diff --git a/examples/pcsaft/parameter_adjustment/data/hexane_liquid_density.csv b/examples/pcsaft/parameter_adjustment/data/hexane_liquid_density.csv new file mode 100644 index 000000000..9f1ba828f --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/data/hexane_liquid_density.csv @@ -0,0 +1,275 @@ +temperature / K,pressure / bar,density / kg/m3 +350.0,3.0,603.3433162626251 +350.0,4.0,599.1132216697094 +350.0,5.0,610.4151065630289 +350.0,6.0,598.9823362225804 +350.0,7.0,604.8184160777041 +350.0,8.0,616.1463504957161 +350.0,9.0,610.7821968537886 +350.0,10.0,609.9827742748857 +350.0,11.0,604.8549325648993 +350.0,12.0,604.5223108432866 +350.0,13.0,608.4217403073151 +350.0,14.0,606.745757498299 +350.0,15.0,598.8759733954658 +350.0,16.0,618.448157532986 +350.0,17.0,602.7955293842575 +350.0,18.0,614.6764875269482 +350.0,19.0,601.3973833967167 +350.0,20.0,615.8821540775406 +350.0,21.0,618.4678109907848 +350.0,22.0,610.6311543126333 +350.0,23.0,606.7401156282276 +350.0,24.0,614.277181198302 +350.0,25.0,609.204751063009 +350.0,26.0,608.7930617185224 +350.0,27.0,600.7956479080012 +350.0,28.0,606.3507009382878 +350.0,29.0,606.7463810669948 +350.0,30.0,618.690141408416 +350.0,31.0,617.4869489001886 +350.0,32.0,622.3909762616244 +350.0,33.0,629.5576749101834 +350.0,34.0,602.6442467849649 +350.0,35.0,617.0878543289906 +350.0,36.0,612.9046318734112 +350.0,37.0,612.4836039890583 +350.0,38.0,620.3802115280514 +350.0,39.0,609.0129438924536 +350.0,40.0,611.2981310407982 +350.0,41.0,621.4542616162036 +350.0,42.0,614.1171188244015 +350.0,43.0,617.2415023006573 +350.0,44.0,612.1684174243139 +350.0,45.0,609.7254143243466 +350.0,46.0,620.7619441911162 +350.0,47.0,625.5175609550494 +350.0,48.0,605.7986958450574 +350.0,49.0,608.5851763421251 +350.0,50.0,609.0102267767329 +400.0,5.0,553.7120559785469 +400.0,6.0,556.0917979051169 +400.0,7.0,548.6431757681518 +400.0,8.0,537.4333978149851 +400.0,9.0,545.4186469785827 +400.0,10.0,546.8770517197061 +400.0,11.0,533.0550730101279 +400.0,12.0,547.7395244977359 +400.0,13.0,549.533389049619 +400.0,14.0,563.6363611983599 +400.0,15.0,555.6695451969309 +400.0,16.0,555.3207350066909 +400.0,17.0,550.0579706748588 +400.0,18.0,549.9977514213923 +400.0,19.0,559.2140847050072 +400.0,20.0,555.4473702103151 +400.0,21.0,553.8127527350648 +400.0,22.0,550.502540118996 +400.0,23.0,560.6092387968739 +400.0,24.0,566.9038434391392 +400.0,25.0,553.1741028263295 +400.0,26.0,553.2091679700608 +400.0,27.0,556.394953769024 +400.0,28.0,558.4932782527848 +400.0,29.0,563.5072424486025 +400.0,30.0,558.9311634085338 +400.0,31.0,554.9818337246614 +400.0,32.0,552.4458069523607 +400.0,33.0,556.1443202037068 +400.0,34.0,563.3527917671141 +400.0,35.0,559.7735040713233 +400.0,36.0,570.7362936250613 +400.0,37.0,562.4912434132942 +400.0,38.0,559.2160220126917 +400.0,39.0,560.2495812881323 +400.0,40.0,567.1712601004208 +400.0,41.0,561.8629053446141 +400.0,42.0,559.8114413427745 +400.0,43.0,569.2203200201093 +400.0,44.0,563.9731779938268 +400.0,45.0,561.1120378071715 +400.0,46.0,558.0706142269768 +400.0,47.0,570.2796071721599 +400.0,48.0,576.6946375772059 +400.0,49.0,564.1919300769248 +400.0,50.0,561.1506435421175 +450.0,17.0,484.48479347744467 +450.0,18.0,479.165934657752 +450.0,19.0,484.784948429577 +450.0,20.0,484.99763945096043 +450.0,21.0,492.4877024445947 +450.0,22.0,489.49362862430456 +450.0,23.0,481.9215193681872 +450.0,24.0,491.2342617481163 +450.0,25.0,485.8365930436647 +450.0,26.0,490.83997722210205 +450.0,27.0,489.57288936537975 +450.0,28.0,483.06011782445773 +450.0,29.0,484.28005939893217 +450.0,30.0,495.04154970429806 +450.0,31.0,499.820041535314 +450.0,32.0,497.1041785044275 +450.0,33.0,489.59952074744507 +450.0,34.0,490.566950456624 +450.0,35.0,494.64182547714915 +450.0,36.0,502.6165102436079 +450.0,37.0,494.5809781024665 +450.0,38.0,504.98304307518 +450.0,39.0,496.15093204697257 +450.0,40.0,504.07975025386986 +450.0,41.0,493.54256969442275 +450.0,42.0,504.0044531780472 +450.0,43.0,526.2299718057731 +450.0,44.0,498.5532378218332 +450.0,45.0,503.12353023474634 +450.0,46.0,497.0347681289733 +450.0,47.0,505.47811275857543 +450.0,48.0,507.12581912443113 +450.0,49.0,505.5582519151179 +450.0,50.0,501.58154155830647 +450.0,51.0,500.6721502799526 +450.0,52.0,509.70996424060473 +450.0,53.0,503.73514233117 +450.0,54.0,505.83132277884835 +450.0,55.0,501.07120369381573 +450.0,56.0,503.78301801486606 +450.0,57.0,503.01039517050236 +450.0,58.0,518.1442277971302 +450.0,59.0,510.86536859930817 +450.0,60.0,509.53638587051114 +450.0,61.0,504.506036756168 +450.0,62.0,512.9249827734735 +450.0,63.0,498.30420378485303 +450.0,64.0,508.22776762975883 +450.0,65.0,504.5387288295917 +450.0,66.0,520.650146963982 +450.0,67.0,516.4251929087095 +450.0,68.0,510.3511730712939 +450.0,69.0,516.9703094260249 +450.0,70.0,513.8675057076377 +450.0,71.0,515.3839790345199 +450.0,72.0,502.8042979697249 +450.0,73.0,513.1430654070788 +450.0,74.0,517.6565141408439 +450.0,75.0,515.4839574913082 +500.0,30.0,373.9540296468808 +500.0,31.0,369.4014994303369 +500.0,32.0,380.53385328939396 +500.0,33.0,377.46381368466723 +500.0,34.0,390.1854236761269 +500.0,35.0,389.78454754749833 +500.0,36.0,389.7264100356803 +500.0,37.0,392.3985327579745 +500.0,38.0,397.5165594506124 +500.0,39.0,392.8340872934888 +500.0,40.0,399.5858946376585 +500.0,41.0,398.44542529331113 +500.0,42.0,403.29210464406515 +500.0,43.0,404.8832600399611 +500.0,44.0,407.22187080476573 +500.0,45.0,405.33335318008426 +500.0,46.0,417.2933567426884 +500.0,47.0,411.7535115960278 +500.0,48.0,418.055761476537 +500.0,49.0,417.0024545606512 +500.0,50.0,418.6124836811744 +500.0,51.0,420.51951722988474 +500.0,52.0,417.1208842522854 +500.0,53.0,425.98177671855336 +500.0,54.0,415.27696374840053 +500.0,55.0,428.9191469989607 +500.0,56.0,431.9428504646053 +500.0,57.0,425.20751657586055 +500.0,58.0,431.9719770940217 +500.0,59.0,429.6476503396437 +500.0,60.0,427.57949381932036 +500.0,61.0,441.43182336285264 +500.0,62.0,441.6024437869026 +500.0,63.0,430.44989610348694 +500.0,64.0,437.9098715734616 +500.0,65.0,436.9066050544091 +500.0,66.0,442.5753558436828 +500.0,67.0,440.00391220582554 +500.0,68.0,436.4600367362062 +500.0,69.0,443.4154973115364 +500.0,70.0,436.91269761939714 +500.0,71.0,468.0574469096655 +500.0,72.0,445.31650559519284 +500.0,73.0,434.91987800317855 +500.0,74.0,453.66728278421954 +500.0,75.0,441.9710636757062 +500.0,76.0,447.9904476558742 +500.0,77.0,451.837398524302 +500.0,78.0,445.3676065156396 +500.0,79.0,450.7142261068397 +500.0,80.0,448.08583606702086 +500.0,81.0,455.1169936713768 +500.0,82.0,454.9563644851747 +500.0,83.0,457.0511650682785 +500.0,84.0,449.1472551348648 +500.0,85.0,453.01102307398526 +500.0,86.0,454.04347748531535 +500.0,87.0,450.766664850108 +500.0,88.0,456.72911807985014 +500.0,89.0,452.3300084264241 +500.0,90.0,463.82622998179585 +500.0,91.0,473.93226630078834 +500.0,92.0,457.48376511217936 +500.0,93.0,456.43049568920185 +500.0,94.0,464.37992544033676 +500.0,95.0,462.04672406916995 +500.0,96.0,464.13440991116795 +500.0,97.0,460.5178514867119 +500.0,98.0,457.82678682955293 +500.0,99.0,467.7924115301135 +500.0,100.0,470.8954622862701 +500.0,101.0,464.1183186498572 +500.0,102.0,466.2394862416614 +500.0,103.0,469.36263212080667 +500.0,104.0,459.52355389773254 +500.0,105.0,466.8542225461191 +500.0,106.0,462.21970581604506 +500.0,107.0,471.83677095519323 +500.0,108.0,466.4729944644651 +500.0,109.0,466.83355281545346 +500.0,110.0,471.011374053168 +500.0,111.0,472.80764007406395 +500.0,112.0,475.03559758542895 +500.0,113.0,466.87818118249766 +500.0,114.0,472.2307516072766 +500.0,115.0,480.4805931648411 +500.0,116.0,471.2736191485617 +500.0,117.0,476.70043099375937 +500.0,118.0,476.0968135671749 +500.0,119.0,479.15547788966256 +500.0,120.0,470.23243486651285 +500.0,121.0,478.70850143080827 +500.0,122.0,476.3402196837817 +500.0,123.0,475.21896013627844 +500.0,124.0,494.24415892915306 +500.0,125.0,467.94234658965524 +500.0,126.0,471.834731658159 +500.0,127.0,480.5483729280001 +500.0,128.0,486.96252014681016 +500.0,129.0,478.55389969058893 +500.0,130.0,472.2965935347497 +500.0,131.0,482.9740469320371 +500.0,132.0,482.65445077366917 +500.0,133.0,501.04704209942145 +500.0,134.0,480.11238208310584 +500.0,135.0,475.1016232925851 +500.0,136.0,477.64282689472475 +500.0,137.0,485.88602038174133 +500.0,138.0,487.14603804917414 +500.0,139.0,488.9440734455953 +500.0,140.0,483.07200810489604 +500.0,141.0,501.05550161523405 +500.0,142.0,475.4921658637216 +500.0,143.0,483.6119523880473 +500.0,144.0,481.6358961191 +500.0,145.0,488.38775206458695 +500.0,146.0,485.61780458737496 +500.0,147.0,481.2520266802343 +500.0,148.0,481.8803238546376 +500.0,149.0,490.99336750665856 +500.0,150.0,489.52160234693423 diff --git a/examples/pcsaft/parameter_adjustment/data/hexane_vapor_pressure.csv b/examples/pcsaft/parameter_adjustment/data/hexane_vapor_pressure.csv new file mode 100644 index 000000000..439074020 --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/data/hexane_vapor_pressure.csv @@ -0,0 +1,252 @@ +temperature / K,vapor_pressure / bar +250.0,0.01562653864480726 +251.0,0.01655851868310787 +252.0,0.01886271338048324 +253.0,0.020195009312443807 +254.0,0.021408100064740216 +255.0,0.022583978181424883 +256.0,0.02319211229778488 +257.0,0.023138636450368788 +258.0,0.02698183507914522 +259.0,0.02749720168967758 +260.0,0.027509842413484878 +261.0,0.031923754462118835 +262.0,0.032270479254044256 +263.0,0.03423394564662559 +264.0,0.035816593066161743 +265.0,0.03982130257011554 +266.0,0.03880356021111405 +267.0,0.0333816634447621 +268.0,0.04925628510630349 +269.0,0.046429650619493994 +270.0,0.038228727040364896 +271.0,0.05369729434854844 +272.0,0.06009712788999235 +273.0,0.056254845100609165 +274.0,0.06041610653983126 +275.0,0.07348325954362277 +276.0,0.06972351302965968 +277.0,0.07113258978100548 +278.0,0.08396851086987081 +279.0,0.07922430507369979 +280.0,0.08291115060166313 +281.0,0.08710396482906219 +282.0,0.09945452146684208 +283.0,0.10066801949498436 +284.0,0.08079497124352136 +285.0,0.10915526901919946 +286.0,0.13649006091362947 +287.0,0.11469232381802794 +288.0,0.13129313718605104 +289.0,0.1235577625919186 +290.0,0.13645105860313392 +291.0,0.14990466624684504 +292.0,0.15070469510914328 +293.0,0.1687337785447109 +294.0,0.174613121787716 +295.0,0.17287294835028166 +296.0,0.1930023744838868 +297.0,0.18823636768099308 +298.0,0.20966641481965984 +299.0,0.21608701003276576 +300.0,0.21944081744856897 +301.0,0.22368969006883352 +302.0,0.24078326736353609 +303.0,0.2520630161782479 +304.0,0.2650027962837446 +305.0,0.28564853863412204 +306.0,0.2804194904194651 +307.0,0.28633537103322393 +308.0,0.3267723640168957 +309.0,0.3070281345646014 +310.0,0.3322832624198513 +311.0,0.33289060339436605 +312.0,0.3387171930744544 +313.0,0.3664827167225716 +314.0,0.3729896860203143 +315.0,0.4155310453496118 +316.0,0.33648895113228483 +317.0,0.38952450840311303 +318.0,0.4620877638480658 +319.0,0.4450526368459835 +320.0,0.44769764179961474 +321.0,0.5046084665925219 +322.0,0.5267894600613381 +323.0,0.5319690962302289 +324.0,0.5801304091074256 +325.0,0.5675320521929653 +326.0,0.6313927643016901 +327.0,0.6249563285251474 +328.0,0.6073349590457212 +329.0,0.6670073485882626 +330.0,0.6734577923765608 +331.0,0.5477877844992014 +332.0,0.7316341450844674 +333.0,0.7820221288432364 +334.0,0.7818008214364845 +335.0,0.8288941941658762 +336.0,0.8921211938388834 +337.0,0.862058808047026 +338.0,0.9300221170740904 +339.0,0.8760578853035924 +340.0,0.9795224339538251 +341.0,1.0044797571699648 +342.0,0.9720257755345022 +343.0,1.3275468335971072 +344.0,1.0712294247652654 +345.0,1.1448898665155964 +346.0,1.056486897292762 +347.0,1.2332328243392883 +348.0,1.227421966598291 +349.0,1.3200698319143103 +350.0,1.2717474578288939 +351.0,1.2992538971124001 +352.0,1.4899626496022573 +353.0,1.4130153458434331 +354.0,1.3603560169466093 +355.0,1.577955492534477 +356.0,1.592487142548855 +357.0,1.606013219225147 +358.0,1.6255518290334663 +359.0,1.6981192467104806 +360.0,1.7718874518987138 +361.0,1.7190770253885612 +362.0,1.8861459331084565 +363.0,1.7984945405244122 +364.0,2.0451746921517175 +365.0,1.9453761470226723 +366.0,1.9902415891679752 +367.0,2.053705759145348 +368.0,2.272939405322121 +369.0,2.153187697967539 +370.0,2.3325503932823217 +371.0,2.016313397240711 +372.0,1.6110642666028698 +373.0,2.334292759631334 +374.0,2.4585380176460525 +375.0,2.4862053112475597 +376.0,2.5440270223890806 +377.0,3.0136176466100557 +378.0,2.5543340609122556 +379.0,2.902182222091758 +380.0,3.1827881508583693 +381.0,3.1979821576338137 +382.0,3.290216590867629 +383.0,2.165686764654631 +384.0,3.037521270732949 +385.0,3.506866230617499 +386.0,3.3531368758778997 +387.0,3.0282349863100086 +388.0,3.3911942804562685 +389.0,3.533590102906167 +390.0,3.854334096291113 +391.0,3.8177858298094214 +392.0,3.9243871490104625 +393.0,4.099324659893703 +394.0,3.9376344065639026 +395.0,4.606205142987147 +396.0,3.8814641921775617 +397.0,4.365388411138144 +398.0,4.2572095755793535 +399.0,4.281264332813597 +400.0,4.6225332646416 +401.0,4.569959625595303 +402.0,4.941222836081543 +403.0,4.833832971569548 +404.0,5.750186934075738 +405.0,5.072087729752317 +406.0,5.142747717351433 +407.0,6.127561297304884 +408.0,8.372920048242806 +409.0,5.635828304483338 +410.0,5.686755951589446 +411.0,5.842723294636776 +412.0,5.612688298072137 +413.0,6.14073826470473 +414.0,6.471253005138077 +415.0,6.823406606374834 +416.0,6.120972948964504 +417.0,6.273123785260139 +418.0,6.666305761805692 +419.0,7.227918268383972 +420.0,7.659218514149384 +421.0,5.703657319678914 +422.0,6.950930616606962 +423.0,7.058106357107404 +424.0,7.511808290511704 +425.0,7.873389655501897 +426.0,7.697154773303714 +427.0,8.10484153838441 +428.0,8.359104943573483 +429.0,8.396841750122658 +430.0,8.176207071211547 +431.0,8.78960784290148 +432.0,8.963486903937106 +433.0,12.372076327591934 +434.0,9.648786548764301 +435.0,17.892127628037755 +436.0,13.087923313731363 +437.0,10.720812792556575 +438.0,9.917309837516477 +439.0,9.58091995744328 +440.0,10.483178917511534 +441.0,10.421915405080478 +442.0,10.458351402222164 +443.0,20.17205264710318 +444.0,10.137141396684374 +445.0,11.149176746176272 +446.0,11.533276169381324 +447.0,12.023919851037595 +448.0,12.04343700340002 +449.0,12.15243132529027 +450.0,11.387869645187326 +451.0,13.037942911333767 +452.0,13.112536787070889 +453.0,12.438104905361294 +454.0,8.81313464096937 +455.0,14.247764289110894 +456.0,14.180763628520447 +457.0,13.604454691248627 +458.0,13.610466867072335 +459.0,14.255906967164519 +460.0,15.381621705581805 +461.0,14.83738661909832 +462.0,14.669633412703716 +463.0,14.580539996665706 +464.0,14.412076566288945 +465.0,15.623389104533608 +466.0,15.64652967497602 +467.0,16.768064783671726 +468.0,17.75750473998638 +469.0,16.207483531986124 +470.0,18.41964631098413 +471.0,16.360041160479952 +472.0,17.303757007159888 +473.0,17.577107927431438 +474.0,17.879872990538217 +475.0,15.63776589971964 +476.0,20.315579260048196 +477.0,19.66579469385739 +478.0,18.94832081337918 +479.0,19.076160519186015 +480.0,20.027396725163552 +481.0,21.200760921199215 +482.0,8.62590910120966 +483.0,30.24145827121653 +484.0,21.286855558597892 +485.0,22.934429260978405 +486.0,21.15544931104773 +487.0,23.075328778011208 +488.0,23.156938799577027 +489.0,24.8031524265266 +490.0,23.112650414816976 +491.0,24.674504571287827 +492.0,23.409763637895416 +493.0,25.64265978559386 +494.0,22.029366985054764 +495.0,24.346844270868782 +496.0,25.90915196334932 +497.0,24.768443715283794 +498.0,25.3542850103745 +499.0,24.613511813581017 +500.0,28.061765367392706 diff --git a/examples/pcsaft/parameter_adjustment/data/hexane_viscosity.csv b/examples/pcsaft/parameter_adjustment/data/hexane_viscosity.csv new file mode 100644 index 000000000..da39ea83b --- /dev/null +++ b/examples/pcsaft/parameter_adjustment/data/hexane_viscosity.csv @@ -0,0 +1,104 @@ +temperature / K,pressure / bar,viscosity / mPas,phase +450.0,0.1,0.009434,vapor +450.0,1.1,0.0094218,vapor +450.0,2.1,0.009433899999999999,vapor +450.0,3.1,0.0094759,vapor +450.0,4.1,0.0095515,vapor +450.0,5.1,0.00966,vapor +450.0,6.1,0.009798399999999999,vapor +450.0,7.1,0.0099619,vapor +450.0,8.1,0.010146,vapor +450.0,9.1,0.010348,vapor +450.0,10.1,0.010565,vapor +450.0,11.1,0.010798,vapor +450.0,12.1,0.011049999999999999,vapor +450.0,12.329,0.011111,vapor +450.0,12.329,0.082036,liquid +450.0,13.1,0.082329,liquid +450.0,14.1,0.082705,liquid +450.0,15.1,0.083076,liquid +450.0,16.1,0.08344299999999999,liquid +450.0,17.1,0.083805,liquid +450.0,18.1,0.084163,liquid +450.0,19.1,0.08451800000000001,liquid +450.0,20.099999999999998,0.084868,liquid +450.0,21.1,0.085215,liquid +450.0,22.1,0.085558,liquid +450.0,23.1,0.08589699999999999,liquid +450.0,24.1,0.086233,liquid +450.0,25.1,0.08656599999999999,liquid +450.0,26.1,0.086896,liquid +450.0,27.1,0.087223,liquid +450.0,28.1,0.08754699999999999,liquid +450.0,29.1,0.087868,liquid +450.0,30.1,0.088187,liquid +450.0,31.1,0.088502,liquid +450.0,32.1,0.08881499999999999,liquid +450.0,33.1,0.089126,liquid +450.0,34.1,0.089434,liquid +450.0,35.1,0.08974,liquid +450.0,36.1,0.090043,liquid +450.0,37.1,0.090344,liquid +450.0,38.1,0.090643,liquid +450.0,39.1,0.09094,liquid +450.0,40.1,0.091235,liquid +450.0,41.1,0.091528,liquid +450.0,42.1,0.091818,liquid +450.0,43.1,0.09210700000000001,liquid +450.0,44.1,0.09239399999999999,liquid +450.0,45.1,0.092679,liquid +450.0,46.1,0.09296199999999999,liquid +450.0,47.1,0.09324400000000001,liquid +450.0,48.1,0.093524,liquid +450.0,49.1,0.093802,liquid +450.0,50.1,0.094078,liquid +450.0,51.1,0.09435299999999999,liquid +450.0,52.1,0.094626,liquid +450.0,53.1,0.094898,liquid +450.0,54.1,0.09516799999999999,liquid +450.0,55.1,0.095437,liquid +450.0,56.1,0.095704,liquid +450.0,57.1,0.09597,liquid +450.0,58.1,0.096234,liquid +450.0,59.1,0.09649699999999999,liquid +450.0,60.1,0.096759,liquid +450.0,61.1,0.09702,liquid +450.0,62.1,0.097279,liquid +450.0,63.1,0.097537,liquid +450.0,64.1,0.097793,liquid +450.0,65.1,0.098049,liquid +450.0,66.1,0.098303,liquid +450.0,67.1,0.09855599999999999,liquid +450.0,68.1,0.098808,liquid +450.0,69.1,0.099059,liquid +450.0,70.1,0.09930800000000001,liquid +450.0,71.1,0.09955699999999999,liquid +450.0,72.1,0.09980399999999999,liquid +450.0,73.1,0.10005,liquid +450.0,74.1,0.1003,liquid +450.0,75.1,0.10053999999999999,liquid +450.0,76.1,0.10078,liquid +450.0,77.1,0.10103,liquid +450.0,78.1,0.10127,liquid +450.0,79.1,0.10150999999999999,liquid +450.0,80.1,0.10175000000000001,liquid +450.0,81.1,0.10199,liquid +450.0,82.10000000000001,0.10221999999999999,liquid +450.0,83.10000000000001,0.10246000000000001,liquid +450.0,84.1,0.1027,liquid +450.0,85.1,0.10293000000000001,liquid +450.0,86.1,0.10317,liquid +450.0,87.1,0.1034,liquid +450.0,88.1,0.10363,liquid +450.0,89.1,0.10386,liquid +450.0,90.1,0.10409,liquid +450.0,91.1,0.10432,liquid +450.0,92.1,0.10454999999999999,liquid +450.0,93.1,0.10478,liquid +450.0,94.1,0.10500999999999999,liquid +450.0,95.1,0.10524,liquid +450.0,96.1,0.10546,liquid +450.0,97.1,0.10568999999999999,liquid +450.0,98.1,0.10590999999999999,liquid +450.0,99.1,0.10614,liquid +450.0,100.1,0.10636,liquid