Skip to content

Commit

Permalink
Merge branch 'main' into pysmo_custom_sampling
Browse files Browse the repository at this point in the history
  • Loading branch information
ksbeattie authored Jan 11, 2024
2 parents e2fa3c6 + de15ec0 commit 93cde23
Show file tree
Hide file tree
Showing 3 changed files with 828 additions and 305 deletions.
Original file line number Diff line number Diff line change
@@ -1,89 +1,120 @@
Thickener (0D)
==============

.. warning::
The Thickener model is currently in beta status and will likely change in the next release as a more predictive version is developed.
The ``Thickener0D`` unit model is a predictive model for clarifiers and thickeners based on the following references:

The ``Thickener0D`` unit model is an extension of the :ref:`SLSeparator <reference_guides/model_libraries/generic/unit_models/solid_liquid/sl_separator:Generic Solid-Liquid Separator>` model which adds constraints to estimate the area and height of a vessel required to achieve the desired separation of solid and liquid based on experimental measurements of the settling velocity. This model is based on correlations described in:
[1] R. Burger, F. Concha, K.H. Karlsen, A. Narvaez, Numerical simulation of clarifier-thickener units treating ideal suspensions with a flux density function having two inflection points, Mathematical and Computer Modelling 44 (2006) 255–275, doi:10.1016/j.mcm.2005.11.008

[1] Coulson & Richardson's Chemical Engineering, Volume 2 Particle Technology & Separation Processes (4th Ed.), Butterworth-Heinemann (2001)
[2] N.G. Barton, C.-H. Li, S.J. Spencer, Control of a surface of discontinuity in continuous thickeners, Journal of the Australian Mathematical Society Series B 33 (1992) 269–289

Sizing Thickeners and Pinch Point
---------------------------------

The approach for sizing the thickener vessel used in this model relies on identifying a pinch point in the thickener which is the limiting condition for the settling velocity of the suspension as described in [1]. The pinch point is described by the condition:

.. math:: max \left( \frac{(Y - Y_{under})}{u(Y)} \right)

where :math:`Y` is the mass based liquid-to-solid ratio, :math:`u(Y)` is the settling velocity of the suspension as a function of :math:`Y` and :math:`Y_{under}` is the liquid-solid ratio at the thickener underflow. Correlations exist which can predict :math:`u(Y)` however in many cases it is necessary to measure this experimentally. Additionally, whilst there are techniques for embedding the maximization operation within an equation-oriented model, these approaches tend to be highly non-linear and require the user to provide good values for scaling parameters and thus have not been implemented yet.

In the current implementation of the model, :math:`Y_{pinch}` and :math:`u_{pinch}` are created as user-defined input variables which should generally be fixed at appropriate values. Users may choose to add a correlation for :math:`u(Y)` if they choose.

Degrees of Freedom
------------------

The ``Thickener0D`` model has 5 degrees of freedom, which are generally chosen from:
The ``Thickener0D`` model has 6 degrees of freedom. Four of these are used to define the solids settling velocity and must be provided by the user.

* the solid particle size ``particle_size``,
* the maximum achievable solid fraction ``solid_fraction_max``,
* two empirical coefficients for calculating the settling velocity ``v1``, ``C``.

* the liquid recovery fraction or underflow liquid-to-solid ratio,
* the liquid-to-solid ratio and settling velocity at the pinch (critical) point,
* the cross-sectional area of the thickener,
* the depth of the clarification zone,
* the depth of the sedimentation zone or the required settling time (experimental).
Additionally, the user must provide 2 additional degrees of freedom regarding the design and/or operation of the thickener such as:

* the cross-sectional area of the settler ``area``,
* the total volumetric flowrate or volume fraction of solids at the underflow, or
* the total volumetric flowrate or volume fraction of solids at the overflow.

Model Structure
---------------

The ``Thickener0D`` model has the same structure as the :ref:`SLSeparator <reference_guides/model_libraries/generic/unit_models/solid_liquid/sl_separator:Model Structure>`.
The ``Thickener0D`` model contains two separators, ``solid_split`` and ``liquid_spit`` to separate the solid and liquid flows. The separations are assumed to be based on total flow with no change in composition, temperature or pressure. The ``Thickener0D`` model has 6 Ports (2 inlet and 4 outlet):

* solid_inlet,
* liquid_inlet,
* solid_overflow,
* liquid_overflow,
* solid_underflow,
* liquid_underflow.

Additional Constraints
----------------------

The ``Thickener0D`` model adds the following additional constraints beyond those written by the :ref:`SLSeparator <reference_guides/model_libraries/generic/unit_models/solid_liquid/sl_separator:Additional Constraints>`.
The ``Thickener0D`` model adds the following constraints to calculate the split fractions of the solid and liquid stream.

Total volumetric flowrates at the feed overflow and underflow are calculated as the sum of the volumetric flowrates of the solid and liquid streams at each location.

.. math:: Q_{x,t} = Q_{solid,x,t} + Q_{liquid,x,t}

where :math:`Q` represents volumetric flowrate and :math:`x` represents the feed, overflow or underflow point.

The cross-sectional area of the thickener is calculated using:
The flux density at the overflow and underflow are calculated using the following constraint:

.. math:: A = \frac{S_t}{\rho_{liq, t}} \times \frac{(Y_{pinch, t}-Y_{under, t})}{u_{pinch, t}}
If :math:`0 \leqslant \epsilon_{x,t} \leqslant \epsilon_{max}`:

where :math:`A` is the cross-section area of the thickener, :math:`S_t` is the mass flowrate of solids entering the thickener, :math:`\rho_{liq}` is the mass density of the liquid phase, :math:`Y_{pinch}` and :math:`Y_{under}` are the mass-based liquid-to-solid ratios at the pinch point and underflow respectively and :math:`u_{pinch}` is the sedimentation velocity of the suspension at the pinch point (Eqn 5.54, pg. 198 in [1]).
.. math:: F_{x,t} = v_0 \times \epsilon_{x, t} \times(1- \frac{\epsilon_{x,t}}{\epsilon_{max}})^C + v_1 \times \epsilon_{x,t}^2 \times(\epsilon_{max}-\epsilon_{x,t})

The liquid-solid ratio at the underflow can be calculated using:
otherwise:

.. math:: Y_{under, t} = \frac{L_{under, t}}{S_t}
.. math:: F_{x,t} = 0

where :math:`L_{under}` is the liquid mass flowrate at the underflow.
where :math:`F` is the flux density, :math:`v_0` is the Stokes velocity of a single particle, :math:`\epsilon` is the solid volume fraction, :math:`\epsilon_{max}` is the maximum attainable solid volume fraction, and :math:`v_1` and :math:`C` are empirical constants [2].

The total height of the thickener is calculated using:
The solids fraction at the overflow and underflow is described using the following equation (derived from [1]).

.. math:: H = \frac{S_t \tau_{t}}{A\rho_{sol, t}} \times \left( 1+\frac{\rho_{sol}}{\rho_{liq}} \times Y_{avg} \right) + H_{clarified}
.. math:: Q_{feed, t} \times \epsilon_{feed,t} = A \times (F_{overflow,t} + F_{underflow,t}) - Q_{overflow,t} \times (\epsilon_{overflow,t} - \epsilon_{feed,t}) + Q_{underflow,t} \times (\epsilon_{underflow,t} - \epsilon_{feed,t})

where :math:`H` is the total height of the thickener, :math:`H_{clarified}` is the height of the clarification zone, :math:`\tau` is the empirically measured settling time required to achieve the desired underflow conditions and :math:`Y_avg` is the average liquid-solid ratio in the thickener (assumed to be linear) (Eqn 5.55, pg. 198 in [1]).
where :math:`A` is the cross-sectional area of the thickener (assumed constant in space and time).

Conservation of solids is enforced using the following constraint:

.. math:: Q_{feed,t} \times \epsilon_{feed,t} = Q_{overflow,t} \times \epsilon_{overflow,t} + Q_{underflow,t} \times \epsilon_{underflow,t}

Two constraints are written to define the solid volume fraction at the feed and underflow point (no constraint is written for the overflow point).

.. math:: Q_{solid,x,t} = \epsilon_{x,t} \times (Q_{solid,x,t} + Q_{liquid,x,t})

The solids volume fraction at the overflow and underflow are bounded by the following inequality constraints:

.. math:: \epsilon_{t,x} \leqslant \epsilon_{max}

Finally, the Stokes velocity is calculated using Stokes Law:

.. math:: 18 \times v0_t \times \mu_{liquid,t} = (\rho_{solid,t} - \rho_{liquid,t}) \times g \times d_p^2

where :math:`\mu_{liquid}` is the viscosity of the liquid phase, :math:`\rho_{liquid}` and :math:`\rho_{solid}` are the densities of the liquid and solid phases, :math:`g` is the acceleration due to gravity and :math:`d_p` is the solid particle diameter.

Variables
---------

The ``Thickener0D`` adds the following variables in addition to those in the :ref:`SLSeparator <reference_guides/model_libraries/generic/unit_models/solid_liquid/sl_separator:Variables>`.

===================== ======================== ====== =====================================================================
Variable Name Index Notes
===================== ======================== ====== =====================================================================
:math:`A` area None Cross-sectional area of thickener
:math:`H` height None Total height of thickener
:math:`H_{clarified}` height_clarified None Height of clarification zone in thickener (height above feed point)
:math:`u_{pinch}` settling_velocity_pinch time Settling velocity of suspension at pinch point
:math:`Y_{pinch}` liquid_solid_pinch time Liquid-solid ratio at pinch point
:math:`Y_{under}` liquid_solid_underflow time Liquid-solid ratio at underflow
:math:`\tau` settling_time time Settling time in thickener
===================== ======================== ====== =====================================================================
The ``Thickener0D`` adds the following variables to those contained in the Separators.

============================= ========================= ====== ========================================================
Variable Name Index Notes
============================= ========================= ====== ========================================================
:math:`A` area None Cross-sectional area of thickener
:math:`Q_{feed}` flow_vol_feed time Total volumetric flowrate at feed point
:math:`Q_{overflow}` flow_vol_overflow time Total volumetric flowrate at overflow point
:math:`Q_{underflow}` flow_vol_underflow time Total volumetric flowrate at underflow point
:math:`\epsilon_{feed}` solid_fraction_feed time Volumetric solids fraction at feed point
:math:`\epsilon_{overflow}` solid_fraction_overflow time Volumetric solids fraction at overflow point
:math:`\epsilon_{underflow}` solid_fraction_underflow time Volumetric solids fraction at underflow point
:math:`F_{overflow}` flux_density_overflow time Solids flux density at overflow point
:math:`F_{underflow}` flux_density_underflow time Solids flux density at underflow point
:math:`d_p` particle size time Solid particle size
:math:`v0` v0 time Stokes velocity of isolated particle
:math:`v1` v1 None Empirical parameter in settling velocity correlation
:math:`C` C None Empirical parameter in settling velocity correlation
math:`\epsilon_{max}` solid_fraction_max None Maximum achievable volumetric solids fraction
============================= ========================= ====== ========================================================

.. module:: idaes.models.unit_models.solid_liquid.thickener

SLSeparator Class
Thickener0D Class
-----------------

.. autoclass:: Thickener0D
:members:

SLSeparatorData Class
Thickener0DData Class
---------------------

.. autoclass:: Thickener0DData
Expand Down
Loading

0 comments on commit 93cde23

Please sign in to comment.