Stoichiometric reactor
The main assumptions of the implemented model are as follows:
Single liquid phase only (solids are not explicitly modeled)
Steady state only
Has no volume
Reaction phenomena is not modeled (e.g. exothermic, endothermic, reaction rate, etc.) User must provide amount of reagent to add, and amount of precipitant that would form
Introduction
This is a basic stoichiometric reactor designed to provide a simple mass balanced method for adding reactants and removing solids from a stream, for more comprehesive reactor models please use IDAES Stoichiometric IDAES Stoichiometric reactor model.
The stoichiometric reactor is a basic unit operation designed to aid in modeling addition of reagent to a feed stream and removal of ions from a stream through precipitation. A basic example for using this model is the lime/soda ash softening process. The reactor can be configured to include only dissolution of a reagent or precipitation of specific species, and both as shown in figure below.
Degrees of Freedom
The degrees of freedom in a stoichiometric reactor unit model are as follows:
- For inlet conditions:
temperature
pressure
component mass compositions
- If reagents are supplied:
reagent mass flow rate or reagent dose
- If precipitants are supplied
precipitant mass flow rate
mass fraction of solids in precipitant (solid) waste stream
Model Structure and Usage
The stoichiometric reactor uses control volumes to perform the dissolution reaction and precipitation reaction, while an IDAES separator is used to separate precipitated solids from the feed stream. The model should be used with MCAS property package Multi-Component Aqueous Solution (MCAS) Property Package. The user needs to specify how supplied reagent and precipitant dissolve or precipitate out of the feed stream using ions present in the feed.
Example dictionary for dissolving Soda ash and Lime into their ions
reagents = {
"Na2CO3": {
"mw": 105.99 * pyunits.g / pyunits.mol,
"dissolution_stoichiometric": {"Na_+": 2, "HCO3_-": 1},
},
"CaO": {
"mw": 56.0774 * pyunits.g / pyunits.mol,
"dissolution_stoichiometric": {"Ca_2+": 1, "H2O": 1},
},
}
Example dictionary for defined precipitant that would form during reaction (Calcite - CaCO3, and Brucite - MgOH)
precipitants = {
"Calcite": {
"mw": 100.09 * pyunits.g / pyunits.mol,
"precipitation_stoichiometric": {"Ca_2+": 1, "HCO3_-": 1},
},
"Brucite": {
"mw": 58.3197 * pyunits.g / pyunits.mol,
"precipitation_stoichiometric": {"Mg_2+": 1, "H2O": 1},
},
}
The user can then provide the model with specified dictionary to produce a stoichiometric reactor that only perform dissolution, precipitation, or both.
# unit for only adding a reagent
m.fs.chemical_addition = StoichiometricReactor(property_package=m.fs.properties, reagent=reagents)
# The user must the specify how much reagent to add
m.fs.chemical_addition.reagent_dose["Na2CO3"].fix(1e-3)
m.fs.chemical_addition.reagent_dose["CaO"].fix(1e-3)
# unit for only precipitating specified species out of the feed
m.fs.precipitation_reactor = StoichiometricReactor(property_package=m.fs.properties, precipitants=precipitants)
# The user must then specify how much precipitant to form
m.fs.precipitation_reactor.flow_mass_precipitate["Calcite"].fix(1e-3)
m.fs.precipitation_reactor.flow_mass_precipitate["Brucite"].fix(1e-4)
# The user must also specify solids fraction in waste stream
m.fs.unit.waste_mass_frac_precipitate.fix(0.2)
# unit for addition and precipitation (e.g. traditional Lime/Soda ash softening process)
m.fs.lime_soda_softening = StoichiometricReactor(property_package=m.fs.properties, reagent=reagents, precipitants=precipitants)
# The user must the specify how much reagent to add and precipitant to form
m.fs.lime_soda_softening.reagent_dose["Na2CO3"].fix(1e-3)
m.fs.lime_soda_softening.reagent_dose["CaO"].fix(1e-3)
m.fs.lime_soda_softening.flow_mass_precipitate["Calcite"].fix(1e-3)
m.fs.lime_soda_softening.flow_mass_precipitate["Brucite"].fix(1e-4)
# The user must also specify solids fraction in waste stream
m.fs.lime_soda_softening.waste_mass_frac_precipitate.fix(0.2)
Sets
Description |
Symbol |
Indices |
---|---|---|
time |
\(t\) |
[0] |
phases |
\(p\) |
[‘Liq’] |
components |
\(j\) |
[‘H2O’, solutes] |
reagents |
\(\text{reagents}\) |
[reagent] |
precipitants |
\(\text{precipitants}\) |
[precipitants] |
Variables
Description |
Variable Name |
Index |
Units |
---|---|---|---|
Reagent dose |
reagent_dose |
[reagent] |
kg/\(\text{m}^3\) |
Reagent density |
density_reagent |
[reagent] |
kg/\(\text{m}^3\) |
Reagent flow mass |
flow_mass_reagent |
[reagent] |
kg/s |
Reagent flow volume |
flow_vol_reagent |
[reagent] |
\(\text{m}^3\)/s |
Stoichiometric coefficients for dissolution |
dissolution_stoich_comp |
[reagent, \(j\)] |
dimensionless |
Flow mass of precipitant |
flow_mass_precipitate |
[precipitant] |
kg/s |
Mass concentration of precipitant |
conc_mass_precipitate |
[precipitant] |
kg/\(\text{m}^3\) |
Stoichiometric coefficients for precipitation |
precipitation_stoich_comp |
[precipitant, \(j\)] |
dimensionless |
Fraction of solids in waste stream |
waste_mass_frac_precipitate |
None |
fraction |