prommis.solid_handling.crusher#

Crusher#

Author: Lingyan Deng

The Crusher module includes power consumption for solid crushing. It is a function of particle size distribution, mass flow rate, and bond work index.

Degrees of Freedom#

A Crusher module has two degrees of freedom, which are the output of “particle_size_median” and “particle_size_width”.

Model Structure#

The Crusher model includes one inlet Port (inlet) and one outlet Port (outlet). The properties of the Crusher Unit model is mainly the particle size distribution.

Additional Constraints#

Crusher adds one additional constraint to calculate the work required to crush the particles.

\[work_{t} = 10 * m_{t, in} * BWI * \left(\frac{1}{\sqrt{P_{t, prod, 80}}} - \frac{1}{\sqrt{P_{t, feed, 80}}}\right)\]

where \(work_{t}\) is the work required to crush the particles at \(t\) time, 10 is an empirical value and should not be changed, \(m_{t, in}\) is the inlet mass flow rate at \(t\) time, \(BWI\) is the bond work index of particles, \(P_{t, prod, 80}\) is production particle size with 80% passing the mesh at \(t\) time, \(P_{t, feed, 80}\) is feed particle size with 80% passing the mesh at \(t\) time.

Expressions#

Crusher includes two expressions to calculate the size of particles that has 80% passing the mesh for both feed and product particles.

\[P_{t, feed, 80} = \frac{S_{t, in, median}}{unit} * \left(-\log(1 - 0.8)\right)^{\frac{SW_{t, in}}{2}}\]

where \(P_{t, feed, 80}\) is the feed particle size that has 80% passing the mesh at \(t\) time, \(\frac{S_{t, in, median}}{unit}\) is the median particle size of input at \(t\) time and unitless. The default particle size is in micrometer. The \(SW_{t, in}\) is the particle size width of input at \(t\) time.

\[P_{t, prod, 80} = \frac{S_{t, out, median}}{unit} * \left(-\log(1 - 0.8)\right)^{\frac{SW_{t, out}}{2}}\]

where \(P_{t, prod, 80}\) is the product particle size that has 80% passing the mesh at \(t\) time, \(\frac{S_{t, out, median}}{unit}\) is the median particle size of output at \(t\) time and unitless. The default particle size is in micrometer. The \(SW_{t, in}\) is the particle size width of output at \(t\) time.

Variables#

Crusher add the following additional variables beyond those created in property packages.

Variable

Name

Notes

\(work_{t}\)

work

class prommis.solid_handling.crusher.Crusher(*args, **kwds)#
Parameters:
  • rule (function) – A rule function or None. Default rule calls build().

  • concrete (bool) – If True, make this a toplevel model. Default - False.

  • ctype (class) –

    Pyomo ctype of the block. Default - pyomo.environ.Block

    Config args

    dynamic

    Crush unit is steady-state only

    has_holdup

    Crush unit has no holdup.

    property_package

    Property parameter object used to define property calculations, default - useDefault. Valid values: { useDefault - use default package from parent model or flowsheet, PropertyParameterObject - a PropertyParameterBlock object.}

    property_package_args

    A ConfigDict with arguments to be passed to a property block(s) and used when constructing these, default - None. Valid values: { see property package for documentation.}

  • initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.

  • idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.

Returns:

(Crusher) New instance

class prommis.solid_handling.crusher.CrusherData(component)[source]#
build()[source]#

Begin building model (pre-DAE transformation).

Parameters:

None

Returns:

None