Fixed Bed 0D Reactor#
The IDAES Fixed Bed 0D Reactor (FixedBed0D) model represents a unit operation where a gas stream passes through a solid phase bed. The FixedBed0D mathematical model is a 0-D time variant model with two phases (gas and solid). The model captures the gas-solid interaction between both phases through reaction, mass and heat transfer.
The model code is located in the main unit model module and may be imported as:
>>> from idaes.models_extra.gas_solid_contactors.unit_models.fixed_bed_0D import FixedBed0D
Assumptions:
There is assumed to be no axial or radial variation in solid composition.
Excess gas flowrate and ideal gas behavior are assumed.
The reactor is assumed to be isothermal, and the reaction is one-way (no equilibrium).
Requirements:
Property packages contain temperature and pressure variables.
Degrees of Freedom#
FixedBed0D Reactors generally have at least 2 (or more) degrees of freedom, including the reactor bed diameter and height.
Model Structure#
The FixedBed0D model assumes a single control volume, and writes a set of material and energy balances for the solid phase. The gas phase conditions are considered to be fixed at the inlet values.
Construction Arguments#
The IDAES FixedBed0D model has construction arguments specific to the whole unit and to the individual regions.
Arguments that are applicable to the FixedBed0D unit as a whole are:
dynamic - indicates whether the model will be dynamic or not, must be True (default = True).
has_holdup - indicates whether holdup terms are constructed or not, must be True (default = True).
energy_balance_type - indicates what type of energy balance should be constructed (default = enthalpyTotal):
EnergyBalanceType.none - exclude energy balances
EnergyBalanceType.enthalpyTotal - single enthalpy balance for material
EnergyBalanceType.enthalpyPhase - enthalpy balances for each phase
EnergyBalanceType.energyTotal - single energy balance for material
EnergyBalanceType.energyPhase - energy balances for each phase
Arguments that are applicable to a specific region:
gas_property_package - property package to use when calculating properties for the gas phase (default = ‘None’). This is provided as a Physical Parameter Block by the Flowsheet when creating the model.
gas_property_package_args - set of arguments to be passed to the gas phase Property Blocks when they are created (default = ‘None’).
solid_property_package - property package to use when calculating properties for the solid phase (default = ‘None’). This is provided as a Physical Parameter Block by the Flowsheet when creating the model.
solid_property_package_args - set of arguments to be passed to the solid phase Property Blocks when they are created (default = ‘None’).
reaction_package - reaction package to use when calculating properties for solid phase reaction (default = None). This is provided as a Reaction Parameter Block by the Flowsheet when creating the model.
reaction_package_args - set of arguments to be passed to the Reaction Blocks when they are created (default = None).
Constraints#
In the following, the subscripts \(g\) and \(s\) refer to the gas and solid phases, respectively. FixedBed0D units write the following Constraints:
Reaction and Mass/Heat Transfer Constraints#
Volume of the bed:
Volume of the solid:
Solid material holdup:
Solid material accumulation:
Total mass of solids:
Sum of component mass fractions:
if self.config.energy_balance_type != EnergyBalanceType.none:
Solid energy holdup:
\[q_{energy,s,t} = V_{s} \rho_{mass,s,t} H_{mass,s,t}\]Solid energy accumulation:
\[{\dot{q}}_{energy,s,t} = - V_{s} {\Sigma}_{r} {r_{s,t,r} H_{rxn,s,t,r}}\]
if self.config.energy_balance_type == EnergyBalanceType.none:
Isothermal solid phase:
\[T_{s,t} = T_{s,t=0}\]
List of Variables#
Variable |
Description |
Reference to |
---|---|---|
\(D_{bed}\) |
Reactor bed diameter |
|
\(H_{mass,s,t}\) |
Solid phase mass enthalpy |
|
\(H_{rxn,s,t,r}\) |
Solid phase reaction enthalpy |
|
\(J_{mass,s,t,j}\) |
Material holdup, solid phase |
|
\({\dot{J}}_{mass,s,t,j}\) |
Material accumulation, solid phase |
|
\(L_{bed}\) |
Reactor bed height |
|
\(M_{s,t}\) |
Total mass of solids |
|
\(q_{energy,s,t}\) |
Energy holdup, solid phase |
|
\({\dot{q}}_{energy,s,t}\) |
Energy accumulation, solid phase |
|
\(r_{s,t,r}\) |
Solid phase reaction rate of reaction r |
|
\(T_{s,t}\) |
Solid phase temperature |
|
\(x_{mass,s,t,j}\) |
Mass fraction of component j, solid phase |
|
\(V_{bed}\) |
Total volume of the bed |
|
\(V_{s,t}\) |
Total volume of solids |
|
Greek letters |
||
\(\rho_{mass,s,t}\) |
Density of solid particles |
|
List of Parameters#
Parameter |
Description |
Reference to |
---|---|---|
\(\varepsilon\) |
Reactor bed voidage |
|
\({MW}_{s,j}\) |
Molecular weight of solid component j |
|
\(\nu_{s,j,r}\) |
Stoichiometric coefficients |
|
Initialization#
The initialization method for this model will save the current state of the model before commencing initialization and reloads it afterwards. The state of the model will be the same after initialization, only the initial guesses for unfixed variables will be changed. For the FixedBed0D model, the initialization method is a general purpose routine for simple unit models where a single control volume is initialized followed by attempting to solve the entire unit.
The model allows for the passing of a dictionary of values of the state variables of the gas and solid phases that can be used as initial guesses for the state variables throughout the time domain of the model. This is optional but recommended. A typical guess could be values of the gas and solid inlet port variables at time \(t=0\).
The model initialization proceeds through a sequential hierarchical method where the model equations are deactivated at the start of the initialization routine, and the complexity of the model is built up through activation and solution of various sub-model blocks and equations at each initialization step. At each step the model variables are updated to better guesses obtained from the model solution at that step.
The initialization routine proceeds as follows:
Step 1: Initialize the thermo-physical model blocks.
Step 2: Initialize the reaction properties.
FixedBed0D Class#
- class idaes.models_extra.gas_solid_contactors.unit_models.fixed_bed_0D.FixedBed0D(*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 = True. Fixed beds must be dynamic.
- has_holdup
Indicates whether holdup terms should be constructed or not. default - True. Fixed bed reactors must be dynamic, thus this must be True.
- energy_balance_type
Indicates what type of energy balance should be constructed, default - EnergyBalanceType.enthalpyTotal. Valid values: { EnergyBalanceType.none - exclude energy balances, EnergyBalanceType.enthalpyTotal - single enthalpy balance for material, EnergyBalanceType.enthalpyPhase - enthalpy balances for each phase, EnergyBalanceType.energyTotal - single energy balance for material, EnergyBalanceType.energyPhase - energy balances for each phase.}
- gas_property_package
Property parameter object used to define property calculations for the gas phase, default - None. 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 gas phase 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 for the solid phase, default - None. 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 solid phase property block(s) and used when constructing these, default - None. Valid values: { see property package for documentation.}
- reaction_package
Reaction parameter object used to define reaction calculations, default - None. Valid values: { None - no reaction package, ReactionParameterBlock - a ReactionParameterBlock object.}
- reaction_package_args
A ConfigBlock with arguments to be passed to a reaction block(s) and used when constructing these, default - None. Valid values: { see reaction 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:
(FixedBed0D) New instance
FixedBed0DData Class#
- class idaes.models_extra.gas_solid_contactors.unit_models.fixed_bed_0D.FixedBed0DData(component)[source]#
0D Fixed Bed Reactor Model Class
- 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(gas_phase_state_args=None, solid_phase_state_args=None, outlvl=0, solver=None, optarg=None)[source]#
Initialization routine for FB0D unit.
- Keyword Arguments:
gas_phase_state_args – a dict of arguments to be passed to the property package(s) to provide an initial state for initialization (see documentation of the specific property package) (default = None).
solid_phase_state_args – a dict of arguments to be passed to the property package(s) to provide an initial state for initialization (see documentation of the specific property package) (default = None).
outlvl – sets output level of initialization 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