Skip to content

Conversation

@ChrisRackauckas-Claude
Copy link

Summary

This PR implements the features requested in issue #2 (Reactors):

  • Abstract Type Hierarchy as specified in the issue:

    • AbstractReactor: Base type for all reactor models
    • AbstractEquilibriumReactor <: AbstractReactor: For equilibrium-based reactors (Gibbs minimization)
    • AbstractKineticReactor <: AbstractReactor: For kinetics-based reactors (rate equations)
  • GibbsReactor that returns an OptimizationSystem (as specified: "constructor gives OptimizationSystem")

    • Minimizes Gibbs free energy subject to elemental balance constraints
    • SteadyStateGibbsReactor wrapper with material connectors for flowsheet integration
  • Plug Flow Reactor (PFR) for reaction kinetics

    • Spatially discretized model with configurable number of nodes
    • SteadyStatePFR and SimplePFR convenience variants
  • Reaction Sets and Kinetics Utilities

    • ReactionSet: Container for managing multiple reactions
    • ArrheniusKinetics and PowerLawKinetics: Helper structs for rate expressions
    • Utility functions: stoichiometry_matrix, reaction_rates, species_production_rates, etc.

Files Added/Modified

New Files

  • src/reactors/types.jl - Abstract type hierarchy
  • src/reactors/reaction_sets.jl - ReactionSet and kinetics utilities
  • src/reactors/PFR.jl - Plug Flow Reactor implementations
  • src/reactors/GibbsReactor.jl - Gibbs equilibrium reactor
  • test/reactors/reactor_types_test.jl - Tests for new components

Modified Files

  • src/ProcessSimulator.jl - Include new files
  • test/runtests.jl - Add new test set

Test Plan

  • New tests pass for reactor type hierarchy
  • New tests pass for ReactionSet utilities
  • New tests pass for ArrheniusKinetics calculations
  • CI tests (note: pre-existing test failures in base components unrelated to this PR)

Notes

  • Pre-existing test failures in test/base/simple_steady_state.jl are unrelated to this PR (confirmed by running tests on main branch)
  • The GibbsReactor implementation follows the pattern specified in the issue, returning an OptimizationSystem for Gibbs minimization

Closes #2

cc @ChrisRackauckas

🤖 Generated with Claude Code

Implements the features requested in issue SciML#2 (Reactors):

## Abstract Type Hierarchy
- `AbstractReactor`: Base type for all reactor models
- `AbstractEquilibriumReactor <: AbstractReactor`: For equilibrium-based reactors
- `AbstractKineticReactor <: AbstractReactor`: For kinetics-based reactors

## New Reactor Components
- `GibbsReactor`: Equilibrium reactor using Gibbs free energy minimization,
  returns an `OptimizationSystem` as specified in the issue
- `SteadyStateGibbsReactor`: Wrapper with material connectors
- `PFR`: Plug Flow Reactor with spatial discretization
- `SteadyStatePFR`: Convenience wrapper for steady-state analysis
- `SimplePFR`: Simplified single control volume PFR model

## Reaction Utilities
- `ReactionSet`: Container for multiple related reactions
- `ArrheniusKinetics`: Helper for Arrhenius rate expressions
- `PowerLawKinetics`: Helper for power-law rate expressions
- Utility functions: `stoichiometry_matrix`, `reaction_rates`,
  `species_production_rates`, `reaction_enthalpies`, `total_heat_of_reaction`

## Tests
- Added tests for reactor type hierarchy
- Added tests for ReactionSet utilities
- Added tests for ArrheniusKinetics calculations

Refs SciML#2

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reactors

2 participants