Class CatalystBed

java.lang.Object
neqsim.process.equipment.reactor.CatalystBed
All Implemented Interfaces:
Serializable

public class CatalystBed extends Object implements Serializable
Catalyst bed properties for packed bed and plug flow reactors.

Models the physical properties of a heterogeneous catalyst bed including particle geometry, void fraction, bulk density, and transport properties. Provides calculations for bed pressure drop (Ergun equation), catalyst effectiveness factor (Thiele modulus), and effective diffusivity.

The Ergun equation for pressure drop through a packed bed:

dP/dz = -(150 * mu * (1-eps)^2 * u) / (eps^3 * dp^2) - (1.75 * rho * (1-eps) * u^2) / (eps^3 * dp)

The effectiveness factor for a spherical catalyst pellet using the Thiele modulus:

eta = (1/phi) * (1/tanh(3*phi) - 1/(3*phi))

Usage example:

CatalystBed catalyst = new CatalystBed();
catalyst.setParticleDiameter(3.0, "mm");
catalyst.setVoidFraction(0.40);
catalyst.setBulkDensity(800.0);
double dPdz = catalyst.calculatePressureDrop(1.5, 25.0, 1.8e-5);
Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • particleDiameter

      private double particleDiameter
      Catalyst particle diameter [m].
    • voidFraction

      private double voidFraction
      Bed void fraction (porosity) [-]. Typical 0.35-0.50 for random packing.
    • bulkDensity

      private double bulkDensity
      Catalyst bulk density [kg/m3]. Mass of catalyst per unit bed volume.
    • particleDensity

      private double particleDensity
      Catalyst particle density [kg/m3]. Density of individual particles.
    • particlePorosity

      private double particlePorosity
      Intra-particle porosity [-]. Fraction of particle volume that is pore.
    • tortuosity

      private double tortuosity
      Tortuosity factor [-]. Ratio of actual pore path length to straight-line distance.
    • specificSurfaceArea

      private double specificSurfaceArea
      BET specific surface area [m2/kg].
    • activityFactor

      private double activityFactor
      Catalyst activity factor [-]. 1.0 = fresh, decreases with deactivation.
  • Constructor Details

    • CatalystBed

      public CatalystBed()
      Default constructor for CatalystBed.
    • CatalystBed

      public CatalystBed(double particleDiameterMm, double voidFraction, double bulkDensityKgM3)
      Constructor with particle diameter and void fraction.
      Parameters:
      particleDiameterMm - particle diameter in mm
      voidFraction - bed void fraction [-]
      bulkDensityKgM3 - bulk density in kg/m3
  • Method Details

    • calculatePressureDrop

      public double calculatePressureDrop(double superficialVelocity, double gasDensity, double gasViscosity)
      Calculate pressure drop per unit length using the Ergun equation.

      dP/dz = -(150 * mu * (1-eps)^2 * u) / (eps^3 * dp^2) - (1.75 * rho * (1-eps) * u^2) / (eps^3 * dp)

      Parameters:
      superficialVelocity - gas superficial velocity [m/s]
      gasDensity - gas density [kg/m3]
      gasViscosity - gas dynamic viscosity [Pa*s]
      Returns:
      pressure drop per unit length [Pa/m] (positive value representing pressure loss)
    • calculateTotalPressureDrop

      public double calculateTotalPressureDrop(double superficialVelocity, double gasDensity, double gasViscosity, double bedLength)
      Calculate pressure drop across the full catalyst bed.
      Parameters:
      superficialVelocity - gas superficial velocity [m/s]
      gasDensity - gas density [kg/m3]
      gasViscosity - gas dynamic viscosity [Pa*s]
      bedLength - bed length [m]
      Returns:
      total pressure drop [bar]
    • calculateThieleModulus

      public double calculateThieleModulus(double volumetricRateConstant, double effectiveDiffusivity)
      Calculate the generalized Thiele modulus for a first-order reaction in a spherical pellet.

      phi = (R/3) * sqrt(k_v / D_eff) where R = particle radius, k_v = volumetric rate constant, D_eff = effective diffusivity. The factor of 3 converts from radius-based to generalized Thiele modulus for sphere.

      Parameters:
      volumetricRateConstant - first-order rate constant [1/s]
      effectiveDiffusivity - effective diffusivity [m2/s]
      Returns:
      generalized Thiele modulus phi [-]
    • calculateEffectivenessFactor

      public double calculateEffectivenessFactor(double thieleModulus)
      Calculate the internal effectiveness factor for a spherical catalyst pellet.

      eta = (1/phi) * [1/tanh(3*phi) - 1/(3*phi)]

      For small phi (phi < 0.1): eta approaches 1.0 (no diffusion limitation). For large phi (phi > 10): eta approaches 1/(3*phi) (severe diffusion limitation).

      Parameters:
      thieleModulus - generalized Thiele modulus phi
      Returns:
      effectiveness factor eta [0-1]
    • getEffectiveDiffusivity

      public double getEffectiveDiffusivity(double molecularDiffusivity)
      Calculate the effective diffusivity inside catalyst pores.

      D_eff = D_molecular * epsilon_particle / tau

      Parameters:
      molecularDiffusivity - molecular diffusivity in free phase [m2/s]
      Returns:
      effective diffusivity [m2/s]
    • calculateReynoldsNumber

      public double calculateReynoldsNumber(double superficialVelocity, double gasDensity, double gasViscosity)
      Calculate bed Reynolds number.

      Re_p = rho * u * dp / (mu * (1 - eps))

      Parameters:
      superficialVelocity - gas superficial velocity [m/s]
      gasDensity - gas density [kg/m3]
      gasViscosity - gas dynamic viscosity [Pa*s]
      Returns:
      particle Reynolds number [-]
    • setParticleDiameter

      public void setParticleDiameter(double diameter, String unit)
      Set particle diameter.
      Parameters:
      diameter - particle diameter value
      unit - unit: "m", "mm", "cm", "in"
    • getParticleDiameter

      public double getParticleDiameter()
      Get particle diameter [m].
      Returns:
      particle diameter in meters
    • setVoidFraction

      public void setVoidFraction(double voidFraction)
      Set bed void fraction.
      Parameters:
      voidFraction - void fraction [-] (0 to 1)
    • getVoidFraction

      public double getVoidFraction()
      Get bed void fraction.
      Returns:
      void fraction [-]
    • setBulkDensity

      public void setBulkDensity(double bulkDensity)
      Set catalyst bulk density.
      Parameters:
      bulkDensity - bulk density [kg/m3]
    • getBulkDensity

      public double getBulkDensity()
      Get catalyst bulk density.
      Returns:
      bulk density [kg/m3]
    • setParticleDensity

      public void setParticleDensity(double particleDensity)
      Set catalyst particle density.
      Parameters:
      particleDensity - particle density [kg/m3]
    • getParticleDensity

      public double getParticleDensity()
      Get catalyst particle density.
      Returns:
      particle density [kg/m3]
    • setParticlePorosity

      public void setParticlePorosity(double particlePorosity)
      Set intra-particle porosity.
      Parameters:
      particlePorosity - particle porosity [-] (0 to 1)
    • getParticlePorosity

      public double getParticlePorosity()
      Get intra-particle porosity.
      Returns:
      particle porosity [-]
    • setTortuosity

      public void setTortuosity(double tortuosity)
      Set tortuosity factor.
      Parameters:
      tortuosity - tortuosity [-] (typically 2-6)
    • getTortuosity

      public double getTortuosity()
      Get tortuosity factor.
      Returns:
      tortuosity [-]
    • setSpecificSurfaceArea

      public void setSpecificSurfaceArea(double area, String unit)
      Set BET specific surface area.
      Parameters:
      area - surface area value
      unit - unit: "m2/kg" or "m2/g"
    • getSpecificSurfaceArea

      public double getSpecificSurfaceArea()
      Get BET specific surface area [m2/kg].
      Returns:
      specific surface area [m2/kg]
    • setActivityFactor

      public void setActivityFactor(double activityFactor)
      Set catalyst activity factor.
      Parameters:
      activityFactor - activity factor [-] (0 to 1, where 1 = fresh)
    • getActivityFactor

      public double getActivityFactor()
      Get catalyst activity factor.
      Returns:
      activity factor [-]