Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Multicomponent Sips isotherm. #260

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ronald-jaepel
Copy link
Collaborator

This PR continues work by @sleweke to add the multicomponent Sips isotherm to CADET-Core.

I've rebased the branch onto master and added two minor changes to documentation and tests.

Status and ToDos:

  • Add Flux and Jacobian Implementation
  • Add tests
  • Complete tests
  • Add documentation

Currently, the tests fail if any cp == 0.

@ronald-jaepel
Copy link
Collaborator Author

ronald-jaepel commented Aug 2, 2024

For reference, here's the current state of the documentation:

$$$ \begin{aligned} \frac{\mathrm{d} q_i}{\mathrm{d} t} = k_{a,i} \left( \frac{c_{p,i}}{ c_{\text{ref}} }\right)^{n_i} q_{\text{max},i} \left( 1 - \sum_{j=0}^{N_{\text{comp}} - 1} \frac{q_j}{q_{\text{max},j}} \right) - k_{d,i} \left( \frac{q_i}{q_{\text{ref}}} \right) && i = 0, \dots, N_{\text{comp}} - 1. \end{aligned} $$$

Multi Component Sips


**Group /input/model/unit_XXX/adsorption – ADSORPTION_MODEL = MULTI_COMPONENT_SIPS**


``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
===================  =========================  =========================================

``SIPS_KA``
   Adsorption rate constants

**Unit:** :math:`s^{-1}`

===================  =========================  =========================================
**Type:** double     **Range:** :math:`\ge 0`   **Length:** NCOMP
===================  =========================  =========================================

``SIPS_KD``
   Desorption rate constants

**Unit:** :math:`mol~m_{SP}^{-3}~s^{-1}`

===================  =========================  ==================================
**Type:** double     **Range:** :math:`\ge 0`   **Length:** NCOMP
===================  =========================  ================================== 

``SIPS_QMAX``
   Maximum adsorption capacities

**Unit:** :math:`mol~m_{SP}^{-3}`

===================  =========================  ==================================
**Type:** double     **Range:** :math:`\gt 0`   **Length:** NCOMP
===================  =========================  ================================== 

``SIPS_EXP``
   Freundlich-type exponent

===================  =========================  ==================================
**Type:** double     **Range:** :math:`\gt 0`   **Length:** NCOMP
===================  =========================  ================================== 

``SIPS_REFC0``
   Reference liquid phase concentration (optional, defaults to
   :math:`1.0`)


**Unit:** :math:`mol~m_{MP}^{-3}`

===================  =========================  =========================================
**Type:** double     **Range:** :math:`\gt 0`   **Length:** 1
===================  =========================  =========================================

``SIPS_REFQ``
   Reference solid phase concentration (optional, defaults to
   :math:`1.0`)


**Unit:** :math:`mol~m_{SP}^{-3}`

===================  =========================  =========================================
**Type:** double     **Range:** :math:`\gt 0`   **Length:** 1
===================  =========================  =========================================

``SIPS_LINEAR_THRESHOLD``
   Threshold for linearization. Originally, the liquid phase concentration
   enters the adsorption rate via a power term. Below this threshold, a
   quadratic approximation is used instead. This ensures numerical stability.

**Unit:** :math:`mol~m_{MP}^{-3}`

===================  =========================  =========================================
**Type:** double     **Range:** :math:`\gt 0`   **Length:** 1
===================  =========================  =========================================

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants