-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add linear driving force implementations of certain isotherms
The following isotherms are added: - Freundlich LDF - Multi-component-Langmuir LDF - Multi-component-Langmuir LDF liquid phase - Multi-component-Bi-Langmuir LDF For more information on linear driving force models, refer to the documentation.
- Loading branch information
1 parent
cd78214
commit bee06f6
Showing
23 changed files
with
1,640 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
.. _freundlich_ldf_config: | ||
|
||
Freundlich LDF | ||
~~~~~~~~~~~~~~~ | ||
|
||
**Group /input/model/unit_XXX/adsorption – ADSORPTION_MODEL = FREUNDLICH_LDF** | ||
|
||
|
||
``IS_KINETIC`` | ||
Selects kinetic or quasi-stationary adsorption mode: 1 = kinetic, 0 = | ||
quasi-stationary. If a single value is given, the mode is set for all | ||
bound states. Otherwise, the adsorption mode is set for each bound | ||
state separately. | ||
|
||
=================== ========================= ================================== | ||
**Type:** int **Range:** {0,1} **Length:** 1/NTOTALBND | ||
=================== ========================= ================================== | ||
|
||
``FLDF_KKIN`` | ||
Driving force coefficient for each component | ||
|
||
|
||
**Unit:** :math:`s^{-1}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** 1/NTOTALBND | ||
=================== ========================= ================================== | ||
|
||
|
||
``FLDF_KF`` | ||
Freundlich coefficient for each component | ||
|
||
**Unit:** :math:`m_{MP}^3~mol^{-1}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** 1/NTOTALBND | ||
=================== ========================= ================================== | ||
|
||
``FLDF_N`` | ||
Freundlich exponent for each component | ||
|
||
**Unit:** :[-] | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`> 0` **Length:** 1/NTOTALBND | ||
=================== ========================= ================================== | ||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
.. _multi_component_bi_langmuir_ldf_config: | ||
|
||
Multi Component Bi-Langmuir LDF | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
**Group /input/model/unit_XXX/adsorption – ADSORPTION_MODEL = MULTI_COMPONENT_BILANGMUIR_LDF** | ||
|
||
|
||
``IS_KINETIC`` | ||
Selects kinetic or quasi-stationary adsorption mode: 1 = kinetic, 0 = | ||
quasi-stationary. If a single value is given, the mode is set for all | ||
bound states. Otherwise, the adsorption mode is set for each bound | ||
state separately. | ||
|
||
=================== ========================= ========================================= | ||
**Type:** int **Range:** {0,1} **Length:** 1/NTOTALBND | ||
=================== ========================= ========================================= | ||
|
||
``MCBLLDF_KEQ`` | ||
Equillibrium loading constants in state-major ordering (see :ref:`ordering_multi_dimensional_data`) | ||
|
||
**Unit:** :math:`m_{MP}^3~mol^{-1}` | ||
|
||
=================== ========================= ========================================= | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP :math:`\cdot` NSTATES | ||
=================== ========================= ========================================= | ||
|
||
``MCBLLDF_KKIN`` | ||
Linear driving force coefficients in state-major ordering | ||
|
||
**Unit:** :math:`s^{-1}` | ||
|
||
=================== ========================= ========================================= | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP :math:`\cdot` NSTATES | ||
=================== ========================= ========================================= | ||
|
||
``MCBLLDF_QMAX`` | ||
Maximum adsorption capacities in state-major ordering | ||
|
||
**Unit:** :math:`mol~m_{SP}^{-3}` | ||
|
||
=================== ========================= ========================================= | ||
**Type:** double **Range:** :math:`\gt 0` **Length:** NCOMP :math:`\cdot` NSTATES | ||
=================== ========================= ========================================= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
.. _multi_component_langmuir_ldf_config: | ||
|
||
Multi Component Langmuir LDF | ||
============================ | ||
|
||
**Group /input/model/unit_XXX/adsorption – ADSORPTION_MODEL = MULTI_COMPONENT_LANGMUIR_LDF** | ||
|
||
|
||
``IS_KINETIC`` | ||
Selects kinetic or quasi-stationary adsorption mode: 1 = kinetic, 0 = | ||
quasi-stationary. If a single value is given, the mode is set for all | ||
bound states. Otherwise, the adsorption mode is set for each bound | ||
state separately. | ||
|
||
=================== ========================= ========================================= | ||
**Type:** int **Range:** {0,1} **Length:** 1/NTOTALBND | ||
=================== ========================= ========================================= | ||
|
||
``MCLLDF_KEQ`` | ||
Equillibrium loading constants | ||
|
||
**Unit:** :math:`m_{MP}^3~mol^{-1}` | ||
|
||
=================== ========================= ========================================= | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP | ||
=================== ========================= ========================================= | ||
|
||
``MCLLDF_KKIN`` | ||
Linear driving force coefficients | ||
|
||
**Unit:** :math:`s^{-1}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP | ||
=================== ========================= ================================== | ||
|
||
``MCLLDF_QMAX`` | ||
Maximum adsorption capacities | ||
|
||
**Unit:** :math:`mol~m_{SP}^{-3}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\gt 0` **Length:** NCOMP | ||
=================== ========================= ================================== |
44 changes: 44 additions & 0 deletions
44
doc/interface/binding/multi_component_langmuir_ldf_liquid_phase.rst
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
.. _multi_component_langmuir_ldf_liquid_phase_config: | ||
|
||
Multi Component Langmuir LDF Liquid Phase | ||
========================================== | ||
|
||
**Group /input/model/unit_XXX/adsorption – ADSORPTION_MODEL = MULTI_COMPONENT_LANGMUIR_LDF_LIQUID_PHASE** | ||
|
||
|
||
``IS_KINETIC`` | ||
Selects kinetic or quasi-stationary adsorption mode: 1 = kinetic, 0 = | ||
quasi-stationary. If a single value is given, the mode is set for all | ||
bound states. Otherwise, the adsorption mode is set for each bound | ||
state separately. | ||
|
||
=================== ========================= ========================================= | ||
**Type:** int **Range:** {0,1} **Length:** 1/NTOTALBND | ||
=================== ========================= ========================================= | ||
|
||
``MCLLDFC_KEQ`` | ||
Equillibrium loading constants | ||
|
||
**Unit:** :math:`m_{MP}^3~mol^{-1}` | ||
|
||
=================== ========================= ========================================= | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP | ||
=================== ========================= ========================================= | ||
|
||
``MCLLDFC_KKIN`` | ||
Linear driving force coefficients | ||
|
||
**Unit:** :math:`s^{-1}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\ge 0` **Length:** NCOMP | ||
=================== ========================= ================================== | ||
|
||
``MCLLDFC_QMAX`` | ||
Maximum adsorption capacities | ||
|
||
**Unit:** :math:`mol~m_{SP}^{-3}` | ||
|
||
=================== ========================= ================================== | ||
**Type:** double **Range:** :math:`\gt 0` **Length:** NCOMP | ||
=================== ========================= ================================== |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
.. _freundlich_ldf_model: | ||
|
||
Freundlich LDF | ||
~~~~~~~~~~~~~~~ | ||
|
||
The Freundlich isotherm model is an empirical model that considers changes in the equilibrium constant of the binding process due to the heterogeneity of the surface and the variation of the interaction strength :cite:`Benedikt2019,Singh2016`. | ||
This variant of the model is based on the linear driving force approximation (see section :ref:`ldf_model`) and is given as | ||
|
||
.. math:: | ||
\begin{aligned} | ||
q^*_i= k_{F,i}c_{p,i}^{\frac{1}{n_{i}}} && i = 0, \dots, N_{\text{comp}} - 1. | ||
\end{aligned} | ||
No interaction between the components is considered when the model has multiple components. | ||
One of the limitation of this isotherm is the first order Jacobian :math:`\left(\frac{dq^*}{dc_p}\right)` tends to infinity as :math:`c_{p} \rightarrow 0` for :math:`n>1`. | ||
To address this issue an approximation of isotherm is considered near the origin. | ||
This approximation matches the isotherm in such a way that :math:`q=0` at :math:`c_p=0` and also matches the first derivative of the istotherm at :math:`c_p = \epsilon`, where :math:`\epsilon` is a very small number, for example :math:`1e-14`. | ||
The form of approximation and its derivative is given below for :math:`c_p < \varepsilon` and :math:`n>1`: | ||
|
||
.. math:: | ||
\begin{aligned} | ||
q^* = \alpha_0+\alpha_1 c+\alpha_2 c_p^2 | ||
\end{aligned} | ||
\begin{aligned} | ||
\frac{dq^*}{dc_p} = \alpha_1+ 2 \alpha_2 c_p | ||
\end{aligned} | ||
where :math:`\alpha_0=0` and :math:`\alpha_1` and :math:`\alpha_2` are determined from :math:`\alpha_1 \varepsilon+\alpha_2 \varepsilon^2 = k_f \varepsilon^{1/n}` and :math:`\alpha_1 + 2 \alpha_2 \varepsilon = \frac{1}{n}k_f \varepsilon^{\frac{1-n}{n}}`. | ||
|
||
.. math:: | ||
\begin{aligned} | ||
\alpha_1 = \frac{2 n-1}{n}k_f \varepsilon^{\frac{1-n}{n}} | ||
\end{aligned} | ||
.. math:: | ||
\begin{aligned} | ||
\alpha_2 = \frac{1-n}{n}k_f \varepsilon^{\frac{1-2 n}{n}} | ||
\end{aligned} | ||
This approximation can be used for any pore phase cocentration :math:`c_p < \epsilon` given :math:`n>1`. | ||
For the case, when :math:`n \le 1` no special treament near the origin is required. | ||
For more information on model parameters required to define in CADET file format, see :ref:`freundlich_ldf_config`. | ||
|
Oops, something went wrong.