Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 1D Fixed Bed reactor model to the IDAES gas-solids contactor library #984

Merged
merged 14 commits into from
Oct 18, 2022
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ Volume of the bed:

Volume of the solid:

.. math:: V_{s,t} = V_{bed} (1 - \epsilon_{s})
.. math:: V_{s,t} = V_{bed} (1 - \varepsilon)

Solid material holdup:

.. math:: j_{mass,s,t,j} = V_{s} \rho_{mass,s,t} x_{mass,s,t,j}
.. math:: J_{mass,s,t,j} = V_{s} \rho_{mass,s,t} x_{mass,s,t,j}

Solid material accumulation:

.. math:: {\dot{j}}_{mass,s,t,j} = V_{s} {MW}_{s,j} {\Sigma}_{r} {r_{s,t,r} \nu_{s,j,r}}
.. math:: {\dot{J}}_{mass,s,t,j} = V_{s} {MW}_{s,j} {\Sigma}_{r} {r_{s,t,r} \nu_{s,j,r}}

Total mass of solids:

Expand All @@ -98,6 +98,8 @@ if self.config.energy_balance_type != EnergyBalanceType.none:

.. math:: {\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:

.. math:: T_{s,t} = T_{s,t=0}
Expand All @@ -111,8 +113,8 @@ List of Variables
":math:`D_{bed}`", "Reactor bed diameter", "``bed_diameter``"
":math:`H_{mass,s,t}`", "Solid phase mass enthalpy", "``solids.enth_mass``"
":math:`H_{rxn,s,t,r}`", "Solid phase reaction enthalpy", "``solids.reactions.dh_rxn``"
":math:`j_{mass,s,t,j}`", "Material holdup, solid phase", "``solids.solids_material_holdup``"
":math:`{\dot{j}}_{mass,s,t,j}`", "Material accumulation, solid phase", "``solids.solids_material_accumulation``"
":math:`J_{mass,s,t,j}`", "Material holdup, solid phase", "``solids.solids_material_holdup``"
":math:`{\dot{J}}_{mass,s,t,j}`", "Material accumulation, solid phase", "``solids.solids_material_accumulation``"
":math:`L_{bed}`", "Reactor bed height", "``bed_height``"
":math:`M_{s,t}`", "Total mass of solids", "``solids.mass_solids``"
":math:`q_{energy,s,t}`", "Energy holdup, solid phase", "``solids.energy_material_holdup``"
Expand All @@ -131,7 +133,7 @@ List of Parameters
.. csv-table::
:header: "Parameter", "Description", "Reference to"

":math:`\epsilon_{s}`", "Void fraction of the solid", "``solids._params.voidage``"
":math:`\varepsilon`", "Reactor bed voidage", "``bed_voidage``"
":math:`{MW}_{s,j}`", "Molecular weight of solid component j", "``solids._params.mw_comp``"
":math:`\nu_{s,j,r}`", "Stoichiometric coefficients", "``solids.reaction_package.rate_reaction_stoichiometry``"

Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ Contents

bubbling_fluidized_bed
fixed_bed_0D
fixed_bed_1D
moving_bed
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
)
from idaes.models_extra.gas_solid_contactors.unit_models.moving_bed import MBR
from idaes.models_extra.gas_solid_contactors.unit_models.fixed_bed_0D import FixedBed0D
from idaes.models_extra.gas_solid_contactors.unit_models.fixed_bed_1D import FixedBed1D
Original file line number Diff line number Diff line change
Expand Up @@ -1278,7 +1278,7 @@ def gas_emulsion_pressure_drop(b, t, x):
)
def isobaric_gas_emulsion(b, t, x):
return (
b.gas_emulsion.properties[t, x].pressure == b.gas_inlet.pressure[0]
b.gas_emulsion.properties[t, x].pressure == b.gas_inlet.pressure[t]
)

# ---------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -519,10 +519,13 @@ def calculate_scaling_factors(self):
iscale.constraint_scaling_transform(c, sf1 * sf2, overwrite=False)

if hasattr(self, "sum_component_constraint"):
# Get a single representative value in component list
for j in self.config.solid_property_package.component_list:
break
for t, c in self.sum_component_constraint.items():
iscale.constraint_scaling_transform(
c,
iscale.get_scaling_factor(self.solids[t].mass_frac_comp["Fe2O3"]),
iscale.get_scaling_factor(self.solids[t].mass_frac_comp[j]),
overwrite=False,
)

Expand Down
Loading