Skip to content

Latest commit

 

History

History
580 lines (378 loc) · 26.4 KB

File metadata and controls

580 lines (378 loc) · 26.4 KB

Bubbling Fluidized Bed Reactor

The IDAES Bubbling Fluidized Bed Reactor (BFBR) model represents a unit operation where two material streams, a solid phase and a gas phase, pass through a linear vessel while undergoing chemical reaction(s). The BFBR model is represented as a 1-D axially discretized model with two phases (gas and solid), and two regions (bubble and emulsion). The model captures the gas-solid interaction between both phases and regions through reaction, mass and heat transfer.

Assumptions:

  • Cloud-wake region effects are negligigble and are not modelled.
  • Gas emulsion is at minimum fluidization conditions.
  • Gas feeds into emulsion region before the excess enters into the bubble region.
  • Gas and solids are well mixed in the radial direction but vary axially.

Requirements:

  • Property package contains temperature and pressure variables.
  • Property package contains minimum fluidization velocity and voidage parameters.

The BFBR model equations are derived from:

    1. Lee, D.C. Miller. A one-dimensional (1-D) three-region model for a bubbling fluidized-bed adsorber, Ind. Eng. Chem. Res. 52 (2013) 469–484.

Degrees of Freedom

BFBRs generally have at least 3 (or more) degrees of freedom, consisting of design and operating variables. The design variables of reactor length, diameter and number of orifices in the distributor are typically the minimum variables to be fixed.

Model Structure

The core BFBR unit model consists of two inlet ports (named gas_inlet and solid_inlet), two outlet ports (named gas_outlet and solid_outlet), and three ControlVolume1DBlock Blocks (named bubble_region, gas_emulsion_region and solid_emulsion_region).

Construction Arguments

The IDAES BFBR model has construction arguments specific to the whole unit and to the individual regions.

Arguments that are applicable to the BFBR unit as a whole are:

  • finite_elements - sets the number of finite elements to use when discretizing the spatial domains (default = 10).
  • length_domain_set - sets the list of point to use to initialize a new ContinuousSet (default = [0.0, 1.0]).
  • transformation_method - sets the discretization method to use by the Pyomo TransformationFactory to transform the spatial domain (default = dae.finite_difference):
    • dae.finite_difference - finite difference method.
    • dae.collocation - orthogonal collocation method.
  • transformation_scheme - sets the scheme to use when transforming a domain. Selected schemes should be compatible with the transformation_method chosen (default = None):
    • None - defaults to "BACKWARD" for finite difference transformation method and to "LAGRANGE-RADAU" for collocation transformation method
    • BACKWARD - use a finite difference transformation method.
    • FORWARD - use a finite difference transformation method.
    • LAGRANGE-RADAU - use a collocation transformation method.
  • collocation_points - sets the number of collocation points to use when discretizing the spatial domains (default = 3, collocation methods only).
  • flow_type - indicates the flow arrangement within the unit to be modeled. Options are:
    • 'co-current' - (default) gas and solid streams both flow in the same direction (from x=0 to x=1)
    • 'counter-current' - gas and solid streams flow in opposite directions (gas from x=0 to x=1 and solid from x=1 to x=0).
  • material_balance_type - indicates what type of energy balance should be constructed (default = MaterialBalanceType.componentTotal).
    • MaterialBalanceType.componentTotal - use total component balances.
    • MaterialBalanceType.total - use total material balance.
  • energy_balance_type - indicates what type of energy balance should be constructed (default = EnergyBalanceType.enthalpyTotal).
    • EnergyBalanceType.none - excludes energy balances.
    • EnergyBalanceType.enthalpyTotal - single enthalpy balance for material.
  • momentum_balance_type - indicates what type of momentum balance should be constructed (default = MomentumBalanceType.pressureTotal).
    • MomentumBalanceType.none - exclude momentum balances.
    • MomentumBalanceType.pressureTotal - single pressure balance for material.
  • has_pressure_change - indicates whether terms for pressure change should be constructed (default = True).
    • True - include pressure change terms.
    • False - exclude pressure change terms.

Arguments that are applicable to the gas phase:

  • property_package - property package to use when constructing bubble region Property Blocks (default = 'use_parent_value'). This is provided as a Physical Parameter Block by the Flowsheet when creating the model. If a value is not provided, the ControlVolume Block will try to use the default property package if one is defined.
  • property_package_args - set of arguments to be passed to the bubble region Property Blocks when they are created (default = 'use_parent_value').
  • reaction_package - reaction package to use when constructing bubble region Reaction Blocks (default = None). This is provided as a Reaction Parameter Block by the Flowsheet when creating the model. If a value is not provided, the ControlVolume Block will try to use the default property package if one is defined.
  • reaction_package_args - set of arguments to be passed to the bubble region Reaction Blocks when they are created (default = None).
  • has_equilibrium_reactions - sets flag to indicate if terms of equilibrium controlled reactions should be constructed (default = False).

Arguments that are applicable to the solid phase:

  • property_package - property package to use when constructing bubble region Property Blocks (default = 'use_parent_value'). This is provided as a Physical Parameter Block by the Flowsheet when creating the model. If a value is not provided, the ControlVolume Block will try to use the default property package if one is defined.
  • property_package_args - set of arguments to be passed to the bubble region Property Blocks when they are created (default = 'use_parent_value').
  • reaction_package - reaction package to use when constructing bubble region Reaction Blocks (default = None). This is provided as a Reaction Parameter Block by the Flowsheet when creating the model. If a value is not provided, the ControlVolume Block will try to use the default property package if one is defined.
  • reaction_package_args - set of arguments to be passed to the bubble region Reaction Blocks when they are created (default = None).
  • has_equilibrium_reactions - sets flag to indicate if terms of equilibrium controlled reactions should be constructed (default = False).

Additionally, BFBR units have the following construction arguments which are passed to all the ControlVolume1DBlock Blocks and are always specified to their default values.

Argument Default Value
dynamic useDefault
has_holdup useDefault

Constraints

Geometric Constraints

Area of orifice:

$$A_{or} = \frac{1}{n_{or}}$$

Bed cross-sectional area:

$$A_{bed} = \pi \frac{D_{bed}^{2}}{4}$$

Area of bubble region:


Ab, t, x = δt, xAbed

Area of gas emulsion region:


Age, t, x = δe, t, xεe, t, xAbed

Area of solid emulsion region:


Ase, t, x = δe, t, x(1−εe, t, x)Abed

Length of bubble region:


Lb = Lbed

Length of gas emulsion region:


Lge = Lbed

Length of solid emulsion region:


Lse = Lbed

Hydrodynamic Constraints

Emulsion region volume fraction:


δe, t, x = 1 − δt, x

Average cross-sectional voidage:


εt, x = 1 − (1−εe, t, x)(1−δt, x)

Emulsion region voidage:


εe, t, x = εmf, se

Bubble growth coefficient:

$$\gamma_{t,x} = \frac{0.0256}{v_{mf,se}} {\left(\frac{D_{bed}}{g} \right)}^{0.5}$$

Maximum bubble diameter:


dbm, t, x5g = 2.595([vg, t, xvge, t, x]Abed)2

Bubble diameter (gas inlet, x = 0):


db, t, x = 1.38g − 0.2([vg, t, xvge, t, x]Aor)0.4

Bubble diameter (x > 0):

$$\frac{dd_{b,t,x}}{ dx } = \frac{0.3}{D_{bed}} L_{bed} {\left(d_{bm,t,x} - d_{b,t,x} - \gamma_{t,x}{\left(D_{bed} d_{b,t,x}\right)}^{0.5}\right)}$$

Bubble rise velocity:


vbr, t, x2 = 0.7112gdb, t, x

Bubble velocity:


vb, t, x = vg, t, x − vmf, se + vbr, t, x

Emulsion region gas velocity:


vge, t, x = vmf, se

Superficial gas velocity:


vg, t, x = vb, t, xδt, x + vge, t, xδe, t, x

Gas emulsion pressure drop:

if 'has_pressure_change' is 'True':


ΔPge, t, x =  − g(1−εe, t, x)ρmass, se, t, x

elif 'has_pressure_change' is 'False':


Pge, t, x = Pg, t, inlet

Mass Transfer Constraints

Bubble to emulsion gas mass transfer coefficient:


Kbe, t, x, jdb, t, x1.25 = 5.94vmf, sedb, t, x0.25 + 5.85Dvap, ge, t, x, j0.5g0.25

Bulk gas mass transfer:

if Cge, total, t, x > Cb, total, t, x:


Kgbulkc, t, x, j = 6Kdδt, xAbed(Cge, total, t, xCb, total, t, x)db, t, xyge, t, x, j

else:


Kgbulkc, t, x, j = 6Kdδt, xAbed(Cge, total, t, xCb, total, t, x)db, t, xyb, t, x, j

Heat Transfer Constraints

Bubble to emulsion gas heat transfer coefficient:


Hbe, t, x, jdb, t, x1.25 = 4.5vmf, secp_vap, b, t, xCb, total, t, xdb, t, x0.25 + 5.85(kvap, b, t, xCb, total, t, xcp_vap, b, t, x)0.5g0.25

Convective heat transfer coefficient:

$$h_{tc,t,x} d_{p,se} = 0.03 k_{vap,e,t,x} {\left(v_{ge,t,x} d_{p,se} \frac{C_{ge,total,t,x}}{\mu_{vap,ge,t,x}} \right)}^{1.3}$$

Emulsion region gas-solids convective heat transfer:


ht_gs, t, xdp, se = 6δe, t, x(1−εe, t, x)htc, t, x(Tge, t, xTse, t, x)

Bulk gas heat transfer:

if Cge, total, t, x > Cb, total, t, x:


Hgbulk, t, x = Kdδt, xAbed(Cge, total, t, xCb, total, t, x)db, t, xHge, t, x

else:


Hgbulk, t, x = Kdδt, xAbed(Cge, total, t, xCb, total, t, x)db, t, xHb, t, x

Mass and heat transfer terms in control volumes

Bubble mass transfer '(p=vap)':


Mtr, b, t, x, p, j = Kgbulkc, t, x, j − Ab, t, xKbe, t, x, j(Cb, total, t, xCge, total, t, x)

Gas emulsion mass transfer '(p=vap)':


Mtr, ge, t, x, p, j =  − Kgbulkc, t, x, j + Ab, t, xKbe, t, x, j(Cb, total, t, xCge, total, t, x) + rhetero, ge, t, x, j

if 'energy_balance_type' is not 'EnergyBalanceType.none':

Bubble heat transfer:


Htr, b, t, x = Hgbulk, t, x − Ab, t, xHbe, t, x, j(Tb, t, xTge, t, x)

Gas emulsion heat transfer:


Htr, ge, t, x =  − Hgbulk, t, x + Ab, t, xHbe, t, x, j(Tb, t, xTge, t, x) − ht_gs, t, xAbed

Solid emulsion heat transfer:


Htr, se, t, x = ht_gs, t, xAbed

Reaction constraints

if 'homogeneous reaction package' is not 'None':

Bubble rate reaction extent:


rext, b, t, x, r = Ab, t, xrb, t, x, r

Gas emulsion rate reaction extent:


rext, ge, t, x, r = Age, t, xrge, t, x, r

if 'heterogeneous reaction package' is not 'None':

Solid emulsion rate reaction extent:


rext, se, t, x, r = Ase, t, xrse, t, x, r

Gas emulsion heterogeneous rate reaction extent:

$$r_{hetero,ge,t,x,j} = A_{se,t,x} \sum_{r}^{reactions} {s_{se,j,r} r_{se,t,x,r}}$$

Flowrate constraints

Bubble gas flowrate:


Fmol, b, t, x = Abedδt, xvb, t, xCb, total, t, x

Emulsion gas flowrate:


Fmol, ge, t, x = Abedvge, t, xCge, total, t, x

Inlet boundary conditions

if 'has_pressure_change' is 'True':

Gas emulsion pressure at inlet:


Pge, t, 0 = Pg, t, inlet − ΔPor

Total gas balance at inlet:


Fmol, b, t, 0 + Fmol, ge, t, 0 = Fmol, g, t, inlet

Superficial gas velocity at inlet:

$$v_{g,t,0} = \frac{F_{mol,g,t,inlet}}{C_{ge,total,t,0} A_{bed}}$$

Bubble mole fraction at inlet:


yb, t, 0, j = yg, t, inlet, j

Gas emulsion mole fraction at inlet:


yge, t, 0, j = yg, t, inlet, j

Solid emulsion mass flow at inlet:

if 'flow_type' is 'co_current' x = 0 else if 'flow_type' is 'counter_current' x = 1:


Fmass, se, t, x = Fmass, s, t, inlet

Solid emulsion mass fraction at inlet:

if 'flow_type' is 'co_current' x = 0 else if 'flow_type' is 'counter_current' x = 1:


xse, t, x = xs, t, inlet

if 'energy_balance_type' is not 'EnergyBalanceType.none':

Gas inlet energy balance:


Hb, t, 0 + Hge, t, 0 = Hg, t, inlet

Gas emulsion temperature at inlet:


Tge, t, 0 = Tg, t, inlet

elif 'energy_balance_type' is 'EnergyBalanceType.none':

Isothermal bubble region:


Tb, t, x = Tg, t, inlet

Isothermal gas emulsion region:


Tge, t, x = Tg, t, inlet

Isothermal solid emulsion region:


Tse, t, x = Ts, t, inlet

if 'flow_type' is 'co_current' x = 0 else if 'flow_type' is 'counter_current' x = 1:

Solid inlet energy balance:


Hse, t, x = Hs, t, inlet

Outlet boundary conditions

Gas emulsion pressure at outlet:


Pg, t, outlet = Pge, t, 1

Total gas balance at outlet:


Fmol, g, t, outlet = Fmol, b, t, 1 + Fmol, ge, t, 1

Solid outlet material balance:

if 'flow_type' is 'co_current' x = 1 else if 'flow_type' is 'counter_current' x = 0:


Fmass, s, t, outlet = Fmass, se, t, x

if 'energy_balance_type' is not 'EnergyBalanceType.none':

Gas outlet energy balance:


Hg, t, outlet = Hb, t, 1 + Hge, t, 1

Solid outlet energy balance:

if 'flow_type' is 'co_current' x = 1 else if 'flow_type' is 'counter_current' x = 0:


Hs, t, outlet = Hse, t, x

elif 'energy_balance_type' is 'EnergyBalanceType.none':

Gas outlet energy balance:


Tg, t, outlet = Tge, t, 1

Solid outlet energy balance:

if 'flow_type' is 'co_current' x = 1 else if 'flow_type' is 'counter_current' x = 0:


Ts, t, outlet = Tse, t, x

Variables

List of variables in the BFBR model:

Variable Name Notes
Lbed bed_height Bed height
Dbed bed_diameter Reactor diameter
Abed bed_area Reactor cross-sectional area
Aor area_orifice Distributor plate area per orifice
nor number_orifice Number of distributor plate orifices per area
δt, x delta Volume fraction occupied by bubble region
δe, t, x delta_e Volume fraction occupied by emulsion region
εt, x voidage_average Cross-sectional average voidage
εe, t, x voidage_emulsion Emulsion region voidage fraction
γt, x bubble_growth_coeff Bubble growth coefficient
dbm, t, x bubble_diameter_max Maximum theoretical bubble diameter
db, t, x bubble_diameter Average bubble diameter
vg, t, x velocity_superficial_gas Gas superficial velocity
vge, t, x velocity_emulsion_gas Emulsion region superficial gas velocity
vbr, t, x velocity_bubble_rise Bubble rise velocity
vb, t, x velocity_bubble Average bubble diameter
Kbe, t, x, j Kbe Bubble to emulsion gas mass transfer coefficient
Kgbulkc, t, x, j Kgbulk_c Gas phase component bulk transfer rate
Hbe, t, x, j Hbe Bubble to emulsion gas heat transfer coefficient
cp_vap, b, t, x cp_mol Mixture mole heat capacity
htc, t, x htc_conv Gas to solid convective heat transfer coefficient
μvap, ge, t, x visc_d Mixture dynamic viscosity
ht_gs, t, x ht_conv Gas to solid convective enthalpy transfer
Hgbulk, t, x Hgbulk Bulk gas heat transfer between bubble and emulsion

rhetero, ge, t, x, j Lb Lge Lse Ab, t, x Age, t, x Ase, t, x

gas_emulsion_hetero_rxn bubble_region.length gas_emulsion_region.length solid_emulsion_region.length bubble_region.area gas_emulsion_region.area solid_emulsion_region.area

Gas emulsion heterogeneous rate reaction generation

ΔPge, t, x gas_emulsion_region.deltaP pressure drop across gas emulsion region
ρmass, se, t, x solid_emulsion_region.properties.dens_mass_particle solid particle mass density
Dvap, ge, t, x, j gas_emulsion_region.properties.diffusion_comp gas component diffusion in gas emulsion region
Cb, total, t, x bubble_region.properties.dens_mol_vap gas mole density in the bubble region

Cge, total, t, x Mtr, b, t, x, p, j Mtr, ge, t, x, p, j Mtr, se, t, x, p, j rext, b, t, x, r rext, ge, t, x, r rext, se, t, x, r rb, t, x, r rge, t, x, r rse, t, x, r

gas_emulsion_region.properties.dens_mol_vap bubble_region.mass_transfer_term gas_emulsion_region.mass_transfer_term solid_emulsion_region.mass_transfer_term bubble_region.rate_reaction_extent gas_emulsion_region.rate_reaction_extent solid_emulsion_region.rate_reaction_extent bubble_region.reactions.reaction_rate gas_emulsion_region.reactions.reaction_rate solid_emulsion_region.reactions.reaction_rate

gas mole density in the emulsion region

kvap, b, t, x bubble_region.properties.therm_cond bubble region thermal conductivity

kvap, e, t, x Tb, t, x Tge, t, x Tse, t, x

gas_emulsion_region.properties.therm_cond bubble_region.properties.temperature gas_emulsion_region.properties.temperature solid_emulsion_region.properties.temperature

gas emulsion region thermal conductivity

Htr, b, t, x bubble_region.heat bubble region heat transfer term
Htr, ge, t, x gas_emulsion_region.heat gas emulsion region heat transfer term

Htr, se, t, x Fmol, b, t, x Fmol, ge, t, x yb, t, x, j yge, t, x, j xse, t, x, j Pge, t, x Fmol, g, t, inlet yg, t, inlet, j Pg, t, inlet Tg, t, inlet Hg, t, inlet Fmass, s, t, inlet xs, t, inlet Ts, t, inlet Hs, t, inlet Fmass, se, t, x Hb, t, x Hge, t, x Hse, t, x Fmol, g, t, outlet yg, t, outlet, j Pg, t, outlet Tg, t, outlet Hg, t, outlet Fmass, s, t, outlet xs, t, outlet Ts, t, outlet Hs, t, outlet

solid_emulsion_region.heat bubble_region.properties.flow_mol gas_emulsion_region.properties.flow_mol bubble_region.properties.mole_frac gas_emulsion_region.properties.mole_frac solid_emulsion_region.properties.mass_frac gas_emulsion_region.properties.pressure gas_inlet.flow_mol gas_inlet.mole_frac gas_inlet.pressure gas_inlet.temperature gas_inlet.enthalpy solid_inlet.flow_mass solid_inlet.mass_frac solid_inlet.temperature solid_inlet.enthalpy solid_emulsion_region.properties.flow_mass bubble_region.properties.enthalpy gas_emulsion_region.properties.enthalpy solid_emulsion_region.properties.enthalpy gas_outlet.flow_mol gas_outlet.mole_frac gas_outlet.pressure gas_outlet.temperature gas_outlet.enthalpy solid_outlet.flow_mass solid_outlet.mass_frac solid_outlet.temperature solid_outlet.mass_enthalpy

solid emulsion region heat transfer term

vmf, se solid_emulsion_region.properties.velocity_mf velocity at minimum fluidization
εmf, se solid_emulsion_region.properties.voidage_mf voidage at minimum fluidization

Kd dp, se

Kd solid_emulsion_region.properties._params.particle_dia

bulk gas permeation coefficient

ΔPor deltaP_orifice Pressure drop across orifice

Parameters

List of parameters in the BFBR model:

Parameter Name Notes
sse, j, r rate_reaction_stoichiometry Reference to solid_emulsion_region.reactions.rate_reaction_stoichiometry

Subscripts

List of subscripts in the BFBR model:

Subscript Name
b bubble region
e emulsion region
g gas phase
ge gas_emulsion
j component
p phase
s solid phase
se solid_emulsion
r reaction
t time
x length

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.

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 and spatial domains 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 and transport properties model blocks
  • Step 2. Initialize geometric constraints
  • Step 3. Initialize the hydrodynamic properties
  • Step 4a. Initialize pressure drop and mass balances without reactions
  • Step 4b. Initialize mass balances with reactions
  • Step 5. Initialize energy balances

BFBR Class

idaes.gas_solid_contactors.unit_models.bubbling_fluidized_bed

BubblingFluidizedBed

BFBRData Class

BubblingFluidizedBedData