Skip to content

Commit 1bb4ff2

Browse files
committed
wip update interface documentation
1 parent 1bff365 commit 1bb4ff2

File tree

1 file changed

+267
-0
lines changed

1 file changed

+267
-0
lines changed
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
.. _axial_flow_column_1D_config:
2+
3+
Axial Flow Column 1D
4+
====================
5+
6+
Group /input/model/unit_XXX - UNIT_TYPE - COLUMN_MODEL_1D
7+
------------------------------------------------------------
8+
9+
For information on model equations, refer to :ref:`axial_flow_column_1D_model`.
10+
11+
12+
``UNIT_TYPE``
13+
14+
Specifies the type of unit operation model
15+
16+
================ =========================================== =============
17+
**Type:** string **Range:** :math:`\texttt{COLUMN_MODEL_1D}` **Length:** 1
18+
================ =========================================== =============
19+
20+
``NCOMP``
21+
22+
Number of chemical components in the chromatographic medium
23+
24+
============= ========================= =============
25+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
26+
============= ========================= =============
27+
28+
``CROSS_SECTION_AREA``
29+
30+
Cross section area of the column (optional if :math:`\texttt{VELOCITY}` is present, see Section :ref:`MUOPGRMflow`)
31+
**Unit:** :math:`\mathrm{m}^{2}`
32+
33+
================ ===================== =============
34+
**Type:** double **Range:** :math:`>0` **Length:** 1
35+
================ ===================== =============
36+
37+
``COL_LENGTH``
38+
39+
Column length
40+
41+
**Unit:** :math:`\mathrm{m}`
42+
43+
================ ====================== =============
44+
**Type:** double **Range:** :math:`> 0` **Length:** 1
45+
================ ====================== =============
46+
47+
``COL_POROSITY``
48+
49+
Column porosity
50+
51+
================ ======================== =============
52+
**Type:** double **Range:** :math:`(0,1]` **Length:** 1
53+
================ ======================== =============
54+
55+
``NPARTYPE``
56+
57+
Number of particle types.
58+
59+
============= ========================= =============
60+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
61+
============= ========================= =============
62+
63+
``PAR_TYPE_VOLFRAC``
64+
65+
Volume fractions of the particle types. The volume fractions can be set for all axial cells together or for each individual axial cell. For each cell, the volume fractions have to sum to :math:`1`. In case of a spatially inhomogeneous setting, the data is expected in cell-major ordering and the :math:`\texttt{SENS_SECTION}` field is used for indexing the axial cell when specifying parameter sensitivities. This field is optional in case of only one particle type.
66+
67+
================ ======================== =============================================================================
68+
**Type:** double **Range:** :math:`[0,1]` **Length:** :math:`\texttt{NPARTYPE} / \texttt{NCOL} \cdot \texttt{NPARTYPE}`
69+
================ ======================== =============================================================================
70+
71+
``VELOCITY``
72+
73+
Interstitial velocity of the mobile phase (optional if :math:`\texttt{CROSS_SECTION_AREA}` is present, see Section :ref:`MUOPGRMflow`)
74+
**Unit:** :math:`\mathrm{m}\,\mathrm{s}^{-1}`
75+
76+
================ ============================= =======================================
77+
**Type:** double **Range:** :math:`\mathbb{R}` **Length:** :math:`1 / \texttt{NSEC}`
78+
================ ============================= =======================================
79+
80+
``COL_DISPERSION``
81+
82+
Axial dispersion coefficient
83+
84+
**Unit:** :math:`\mathrm{m}_{\mathrm{IV}}^{2}\,\mathrm{s}^{-1}`
85+
86+
================ ========================= =========================================================
87+
**Type:** double **Range:** :math:`\geq 0` **Length:** see :math:`\texttt{COL_DISPERSION_MULTIPLEX}`
88+
================ ========================= =========================================================
89+
90+
``COL_DISPERSION_MULTIPLEX``
91+
92+
Multiplexing mode of :math:`\texttt{COL_DISPERSION}`. Determines whether :math:`\texttt{COL_DISPERSION}` is treated as component- and/or section-independent. This field is optional. When left out, multiplexing behavior is inferred from the length of :math:`\texttt{COL_DISPERSION}`. Valid modes are:
93+
94+
0. Component-independent, section-independent; length of :math:`\texttt{COL_DISPERSION}` is :math:`1`
95+
1. Component-dependent, section-independent; length of :math:`\texttt{COL_DISPERSION}` is :math:`\texttt{NCOMP}`
96+
2. Component-independent, section-dependent; length of :math:`\texttt{COL_DISPERSION}` is :math:`\texttt{NSEC}`
97+
3. Component-dependent, section-dependent; length of :math:`\texttt{COL_DISPERSION}` is :math:`\texttt{NCOMP} \cdot \texttt{NSEC}`; ordering is section-major
98+
99+
============= =================================== =============
100+
**Type:** int **Range:** :math:`\{0, \dots, 3 \}` **Length:** 1
101+
============= =================================== =============
102+
103+
``REACTION_MODEL_BULK``
104+
105+
Specifies the type of reaction model of the bulk volume. The model is configured in the subgroup :math:`\texttt{reaction_bulk}`.
106+
107+
================ ======================================== =============
108+
**Type:** string **Range:** See Section :ref:`FFReaction` **Length:** 1
109+
================ ======================================== =============
110+
111+
``INIT_C``
112+
113+
Initial concentrations for each component in the bulk mobile phase
114+
115+
**Unit:** :math:`\mathrm{mol}\,\mathrm{m}_{\mathrm{IV}}^{-3}`
116+
117+
================ ========================= ==================================
118+
**Type:** double **Range:** :math:`\geq 0` **Length:** :math:`\texttt{NCOMP}`
119+
================ ========================= ==================================
120+
121+
``INIT_STATE``
122+
123+
Full state vector for initialization (optional, :math:`\texttt{INIT_C}`, :math:`\texttt{INIT_CP}`, and :math:`\texttt{INIT_CS}` will be ignored; if length is :math:`2\texttt{NDOF}`, then the second half is used for time derivatives)
124+
125+
**Unit:** :math:`various`
126+
127+
================ ============================= ==================================================
128+
**Type:** double **Range:** :math:`\mathbb{R}` **Length:** :math:`\texttt{NDOF} / 2\texttt{NDOF}`
129+
================ ============================= ==================================================
130+
131+
132+
Group /input/model/unit_XXX/discretization - UNIT_TYPE - COLUMN_MODEL_1D
133+
----------------------------------------------------------------------------------------
134+
135+
``USE_ANALYTIC_JACOBIAN``
136+
137+
Determines whether analytically computed Jacobian matrix (faster) is used (value is 1) instead of Jacobians generated by algorithmic differentiation (slower, value is 0)
138+
139+
============= =========================== =============
140+
**Type:** int **Range:** :math:`\{0, 1\}` **Length:** 1
141+
============= =========================== =============
142+
143+
Spatial discretization - Numerical Methods
144+
------------------------------------------
145+
146+
CADET offers two spatial discretization methods: Finite Volumes (FV) and Discontinuous Galerkin (DG). Each method has it's own set of input fields.
147+
While both methods approximate the same solution to the same underlying model, they may differ in terms of computational performance.
148+
With our currently implemented variants of FV and DG, FV perform better for solutions with steep gradients or discontinuities, while DG can be much faster for rather smooth solutions.
149+
For the same number of discrete points, DG will generally be slower but often more accurate.
150+
151+
For further information on the choice of discretization methods and their parameters, see :ref:`spatial_discretization_methods`.
152+
153+
``SPATIAL_METHOD``
154+
155+
Spatial discretization method. Optional, defaults to :math:`\texttt{FV}`
156+
157+
================ =============================================== =============
158+
**Type:** string **Range:** :math:`\{\texttt{FV}, \texttt{DG}\}` **Length:** 1
159+
================ =============================================== =============
160+
161+
Discontinuous Galerkin
162+
----------------------
163+
164+
``POLYDEG``
165+
166+
DG polynomial degree. Optional, defaults to 4 and :math:`N_d \in \{3, 4, 5\}` is recommended. The total number of axial discrete points is given by (``POLYDEG`` + 1 ) * ``NELEM``
167+
168+
============= ========================= =============
169+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
170+
============= ========================= =============
171+
172+
``NELEM``
173+
174+
Number of axial column discretization DG cells\elements. The total number of axial discrete points is given by (``POLYDEG`` + 1 ) * ``NELEM``
175+
176+
============= ========================= =============
177+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
178+
============= ========================= =============
179+
180+
``NCOL``
181+
182+
Number of axial discrete points. Optional and ignored if ``NELEM`` is defined. Otherwise, used to calculate ``NELEM`` = :math:`\lfloor` ``NCOL`` / (``POLYDEG`` + 1 ) :math:`\rfloor`
183+
184+
============= ========================= =============
185+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
186+
============= ========================= =============
187+
188+
``EXACT_INTEGRATION``
189+
190+
Specifies the DG integration variant. Optional, defaults to 0
191+
192+
============= =========================== =============
193+
**Type:** int **Range:** :math:`\{0, 1\}` **Length:** 1
194+
============= =========================== =============
195+
196+
``LINEAR_SOLVER``
197+
198+
Specifies the linear solver variant used to factorize the semidiscretized system. Optional, defaults to ``SparseLU``. For more information on these solvers, we refer to the `Eigen documentation <https://eigen.tuxfamily.org/>`_
199+
200+
============= =================================================================================== =============
201+
**Type:** int **Range:** :math:`\{\texttt{SparseLU}, \texttt{SparseQR}, ..., \texttt{BiCGSTAB}\}` **Length:** 1
202+
============= =================================================================================== =============
203+
204+
205+
When using the DG method, we generally recommend specifying ``USE_MODIFIED_NEWTON = 1`` in :ref:`FFSolverTime`, i.e. to use the modified Newton method to solve the linear system within the time integrator.
206+
For further information on discretization parameters, see also :ref:`non_consistency_solver_parameters`.
207+
208+
Finite Volumes
209+
--------------
210+
211+
``NCELLS``
212+
213+
Number of axial column discretization points, i.e. FV cells
214+
215+
============= ========================= =============
216+
**Type:** int **Range:** :math:`\geq 1` **Length:** 1
217+
============= ========================= =============
218+
219+
``RECONSTRUCTION``
220+
221+
Type of reconstruction method for fluxes
222+
223+
================ ================================ =============
224+
**Type:** string **Range:** :math:`\texttt{WENO}` **Length:** 1
225+
================ ================================ =============
226+
227+
``GS_TYPE``
228+
229+
Type of Gram-Schmidt orthogonalization, see IDAS guide Section 4.5.7.3, p. 41f. A value of :math:`0` enables classical Gram-Schmidt, a value of 1 uses modified Gram-Schmidt.
230+
231+
============= =========================== =============
232+
**Type:** int **Range:** :math:`\{0, 1\}` **Length:** 1
233+
============= =========================== =============
234+
235+
``MAX_KRYLOV``
236+
237+
Defines the size of the Krylov subspace in the iterative linear GMRES solver (0: :math:`\texttt{MAX_KRYLOV} = \texttt{NCOL} \cdot \texttt{NCOMP} \cdot \texttt{NPARTYPE}`)
238+
239+
============= ============================================================================================ =============
240+
**Type:** int **Range:** :math:`\{0, \dots, \texttt{NCOL} \cdot \texttt{NCOMP} \cdot \texttt{NPARTYPE} \}` **Length:** 1
241+
============= ============================================================================================ =============
242+
243+
``MAX_RESTARTS``
244+
245+
Maximum number of restarts in the GMRES algorithm. If lack of memory is not an issue, better use a larger Krylov space than restarts.
246+
247+
============= ========================= =============
248+
**Type:** int **Range:** :math:`\geq 0` **Length:** 1
249+
============= ========================= =============
250+
251+
``SCHUR_SAFETY``
252+
253+
Schur safety factor; Influences the tradeoff between linear iterations and nonlinear error control; see IDAS guide Section~2.1 and 5.
254+
255+
================ ========================= =============
256+
**Type:** double **Range:** :math:`\geq 0` **Length:** 1
257+
================ ========================= =============
258+
259+
``FIX_ZERO_SURFACE_DIFFUSION``
260+
261+
Determines whether the surface diffusion parameters :math:`\texttt{SURFACE_DIFFUSION}` are fixed if the parameters are zero. If the parameters are fixed to zero (:math:`\texttt{FIX_ZERO_SURFACE_DIFFUSION} = 1`, :math:`\texttt{SURFACE_DIFFUSION} = 0`), the parameters must not become non-zero during this or subsequent simulation runs. The internal data structures are optimized for a more efficient simulation. This field is optional and defaults to :math:`0` (optimization disabled in favor of flexibility).
262+
263+
============= =========================== =============
264+
**Type:** int **Range:** :math:`\{0, 1\}` **Length:** 1
265+
============= =========================== =============
266+
267+
For further information on discretization parameters, see also :ref:`flux_reconstruction_methods` (FV specific)), and :ref:`non_consistency_solver_parameters`.

0 commit comments

Comments
 (0)