prommis.solvent_extraction.solvent_extraction#
Solvent Extraction Model
Author: Arkoprabho Dasgupta
The Solvent Extraction unit model is used to perform the solvent extraction unit operation. It represents a series of tanks, referred to as stages, through which the aqueous and organic phases are passed, and the desired components are extracted subsequently.
Configuration Arguments#
The user must specify the following configurations in a solvent extraction model to be able to use it.
The user must specify the aqueous feed input in the aqueous_stream configuration, with a
configuration that describes the aqueous feed’s properties.
The user must specify the organic feed input in the organic_stream configuration, with a
configuration that describes the organic feed’s properties.
The number of stages in the solvent extraction process has to be specified by the user through
the number_of_finite_elements configuration. It takes an integer value.
The material transfer can happen from either of the phases to the other. To specify the direction
of the transfer, the aqueous_to_organic configuration is to be used by the user. This is a boolean
configuration. The default value is True, which means the material transfer is happening from the
aqueous phase to the organic phase, like in the loading operation. For scrubbing and stripping, the
reverse happens, so the value of the configuration will be False.
Stream configurations#
Each of the feed streams has to have a dictionary that specifies the property packages and other details as mentioned below.
The property_package configuration is the property package that describes the state conditions
and properties of a particular stream.
The property_package_args configuration is any specific set of arguments that has to be passed to
the property block for the unit operation.
The user can specify the direction of the flow of the stream through the stages through the
configuration flow_direction. This is a configuration, that uses FlowDirection Enum, which
can have two possible values.
Degrees of freedom#
When the solvent extraction model is operated in steady state, the number of degrees of freedom of the model is equal to the number of partition coefficients of the total components involved in the mass transfer operation, for all the stages.
If the model is operated in dynamic state, the number of degrees of freedom is equal to the sum of the partition coefficient of all components involved in the mass transfer operation, values of the state block variables of all the components of the system at the start of the operation, the volumes and the volume fractions, for all the stages.
Model structure#
The core model consists of a MSContactor model, with stream names hard coded as ‘aqueous’ and ‘organic’, and the stream dictionaries and number of finite elements are the same as those provided by the user.
This model defines the material transfer term defined in the MSContactor and expresses it as a function of the parameter of partition coefficient defined by the user.
- class prommis.solvent_extraction.solvent_extraction.SolventExtraction(*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
Indicates whether this model will be dynamic or not, default = useDefault. Valid values: { useDefault - get flag from parent (default = False), True - set as a dynamic model, False - set as a steady-state model.}
- has_holdup
Indicates whether holdup terms should be constructed or not. Must be True if dynamic = True, default - False. Valid values: { useDefault - get flag from parent (default = False), True - construct holdup terms, False - do not construct holdup terms}
- aqueous_stream
Aqueous stream properties
- aqueous_stream
- property_package
Property parameter object used to define property calculations for given stream, default - useDefault. Valid values: { useDefault - use default package from parent model or flowsheet, PhysicalParameterObject - a PhysicalParameterBlock object.}
- property_package_args
A ConfigDict with arguments to be passed to property block(s) and used when constructing these, default - None. Valid values: { see property package for documentation.}
- flow_direction
Direction of flow for stream
- has_energy_balance
Bool indicating whether to include energy balance for stream. Default=False.
- has_pressure_balance
Bool indicating whether to include pressure balance for stream. Default=False.
- organic_stream
Organic stream properties
- organic_stream
- property_package
Property parameter object used to define property calculations for given stream, default - useDefault. Valid values: { useDefault - use default package from parent model or flowsheet, PhysicalParameterObject - a PhysicalParameterBlock object.}
- property_package_args
A ConfigDict with arguments to be passed to property block(s) and used when constructing these, default - None. Valid values: { see property package for documentation.}
- flow_direction
Direction of flow for stream
- has_energy_balance
Bool indicating whether to include energy balance for stream. Default=False.
- has_pressure_balance
Bool indicating whether to include pressure balance for stream. Default=False.
- number_of_finite_elements
Number of finite elements to use
- aqueous_to_organic
Direction of the transfer between two phases
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:
(SolventExtraction) New instance
- class prommis.solvent_extraction.solvent_extraction.SolventExtractionInitializer(**kwargs)[source]#
This is a general purpose Initializer for the Solvent Extraction unit model.
This routine calls the initializer for the internal MSContactor model.
- constraint_tolerance
Tolerance for checking constraint convergence
- output_level
Set output level for logging messages
- solver
Solver to use for initialization
- solver_options
Dict of options to pass to solver
- writer_config
Dict of writer_config arguments to pass to solver
- default_submodel_initializer
Default Initializer object to use for sub-models. Only used if no Initializer defined in submodel_initializers.