prommis.roasting.ree_feed_roaster#

IDAES REE Feed Roaster Unit Model#

This model represents a roaster/calcination unit for Rare Earth Element (REE) feedstock, which includes rare earth minerals, gangue/impurity minerals, moisture, and combustible organic materials.

Reactions#

The reactions of impurities involved are listed below:

  1. Kaolinite calcination:

    \[\require{mhchem} \ce{Al2O3 \cdot 2SiO2 \cdot 2H2O -> Al2O3 + 2 SiO2 + 2 H2O (g)}\]

    Typically occurs above 400°C, assuming complete conversion.

  2. Limestone calcination:

    \[\require{mhchem} \ce{CaCO3 -> CaO + CO2 (g)}\]

    Typically occurs above 850°C; conversion is a user input.

  3. Pyrite combustion:

    \[\require{mhchem} \ce{FeS2 + 2.75 O2 -> 0.5 Fe2O3 + 2 SO2 (g)}\]

    Typically occurs above 600°C, assuming complete conversion.

Combustion of organic elements is modeled as follows:

  • \(\require{mhchem} \ce{C + O2 -> CO2}\)

  • \(\require{mhchem} \ce{H + 0.25 O2 -> 0.5 H2O}\)

  • \(\require{mhchem} \ce{O -> 0.5 O2}\)

  • \(\require{mhchem} \ce{N -> 0.5 N2}\)

  • \(\require{mhchem} \ce{S + O2 -> SO2}\)

Physical Changes#

Moisture in the feed stream is vaporized.

Composition#

Impurity minerals are assumed to be a mixture of \(\require{mhchem} \ce{Un2O3}\), \(\require{mhchem} \ce{CaCO3}\), \(\require{mhchem} \ce{SiO2}\), \(\require{mhchem} \ce{Al2O3}\), kaolinite, and pyrite, where \(\require{mhchem} \ce{Un}\) is an unknown element with the same atomic mass as \(\require{mhchem} \ce{Al}\).

The feed stream also contains organic material including \(\require{mhchem} \ce{C}\), \(\require{mhchem} \ce{H}\), \(\require{mhchem} \ce{O}\), \(\require{mhchem} \ce{N}\), \(\require{mhchem} \ce{S}\) elements. The composition of the organic material is specified by the user.

Heat Source#

The heat to the reactor can be provided either by external heating as a user input or by the combustion of a fossil fuel with air to form a hot \(\require{mhchem} \ce{O2}\)-containing flue gas. The gas inlet stream is an \(\require{mhchem} \ce{O2}\)-containing hot flue gas.

Streams#

  • Gas Inlet Stream: \(\require{mhchem} \ce{O2}\)-containing hot flue gas.

  • Gas Outlet Stream: Gas product leaving the reactor.

  • Solid Outlet Stream: Recovered solid product leaving the reactor.

Thermal Properties#

The standard heats of formation and heat capacities of solid components involved are defined as parameters in this model. The default values of those parameters are obtained from two sources as listed below:

  1. NIST Chemistry WebBook

  2. Wagman, D.D., W.H. Evans, V.B. Parker, R.H.Schumm, I. Halow, S.M. Bailey, K.L. Churney, R.L. Nuttall, “The NBS tables of chemical thermodynamic properties-Selected values for inorganic and C1 and C2 organic substances in SI units,” Journal of Physical and Chemical Reference Data, 11(2), 1982

  3. Merrick, D., “Mathematical models of the thermal decomposition of coal, 2. Specific heats and heats of reaction,” Fuel, 62, pp540-546, 1983

The NIST WebBook data are used for the properties of \(\require{mhchem} \ce{Al2O3}\), \(\require{mhchem} \ce{SiO2}\), \(\require{mhchem} \ce{CaO}\), \(\require{mhchem} \ce{Fe2O3}\), and pyrite. Note that the heat capacity model is simplified as a linear function of temperature. The data of Wagman et al are used for the properties of \(\require{mhchem} \ce{CaCO3}\) and kaolinite. The gas phase properties are calculated based on user configured property package. The heat capacity of organic part of the feed is usually a function of temperature and elemental composition of C, H, O, N, and S elements according to Merrick (1983). For simplicity, a constant heat capacity of 1260 J/kg-K in the range reported by Merrick is used in this model.

Assumptions#

  • No kinetics or mass transfer is considered for the calcination of impurity minerals.

  • User specifies the conversion of limestone.

  • Calcination of kaolinite and combustion of pyrite are assumed to be complete.

  • Conversion of insoluble REE mineral to dissolvable mineral for each element is a user input.

  • Final solid product is split to a recovered product stream and a dust stream with user-specified recovery fractions for the impurity and individual RE elements.

  • Rare earth minerals, being in ppm level, are ignored in energy balance.

  • Material balance of the REE is considered for the element only; the forms of the RE compounds (in salt or oxide forms) are not considered.

  • If the product temperature is specified as a user input, the heat duty will be calculated. If the heat duty is given, the product temperature will be calculated.

  • Temperatures of solid and gas products are assumed to be the same.

  • No port for the solid inlet stream is used. The mass flow rate and composition of the solid reactant are specified as input variables inside the model. The mass flow rate and the composition of the solid product and dust streams are also declared as model variables. When mapping the solid products to the solid_outlet port, only the components defined in the prommis.leaching.leach_solids_properties module are mapped. The other species are discarded.

class prommis.roasting.ree_feed_roaster.REEFeedRoaster(*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 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: { True - construct holdup terms, False - do not construct holdup terms}

    gas_property_package

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

    gas_property_package_args

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

    solid_property_package

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

    solid_property_package_args

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

    has_heat_transfer

    Indicates whether terms for heat transfer should be constructed, default - False. Valid values: { True - include heat transfer terms, False - exclude heat transfer terms.}

    has_pressure_change

    Indicates whether terms for pressure change should be constructed, default - False. Valid values: { True - include pressure change terms, False - exclude pressure change terms.}

    ree_list

    A dict of the components of interest in the mixture. Keys are component names and values are configuration arguments to be passed to Component on construction.

  • 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:

(REEFeedRoaster) New instance

class prommis.roasting.ree_feed_roaster.REEFeedRoasterData(component)[source]#

Simple 0D roaster model with mass and energy balance only

build()[source]#

General build method for UnitModelBlockData. This method calls a number of sub-methods which automate the construction of expected attributes of unit models.

Inheriting models should call super().build.

Parameters:

None

Returns:

None

initialize_build(state_args_gas_in=None, outlvl=0, solver=None, optarg=None)[source]#

Initialization routine. 1.- initialize state blocks, using an initial guess for inlet gas inlet. 2.- guess gas outlet component molar flowrates, Temperature, and Pressure. Initialize flue gas state block. 3.- Then, solve complete model.

Keyword Arguments:
  • state_args_gas_in – a dict of arguments to be passed to the property package(s) for the inlet gas state block to provide an initial state for initialization (see documentation of the specific property package) (default = None).

  • outlvl – sets output level of initialisation routine

  • optarg – solver options dictionary object (default=None, use default solver options)

  • solver – str indicating which solver to use during initialization (default = None, use default solver)

Returns:

None