Skip to content

Dualism of InterfaceKinetics vs Reactor Networks (ReactorSurface)? #61

Open
@ischoegl

Description

@ischoegl

Cantera version

2.5.0a3

Expected Behavior

A single approach for solving surface problems in the context of zero-dimensional simulations.

Actual Behavior

There appear to be two distinct approaches to simulate surface kinetics problems.

  • InterfaceKinetics
  • Reactor + ReactorSurface object in a reactor network
  • Time integration is handled by two completely separate functions (advance_coverages vs advance).

Proposal

It is conceivable to merge the approaches by introducing something along the lines of

Example 1: diamond_cvd.py

g, dbulk = ct.import_phases('diamond.cti', ['gas', 'diamond'])
d = ct.Interface('diamond.cti', 'diamond_100')
gas = ct.Reservoir(g)
solid = ct.Reactor(dbulk)
surf = ct.Surface(d, [gas, solid])

sim = ct.ReactorNet([solid, surf])
sim.advance(some_end_time)

Example 2: surf_pfr.py

gas = ct.Solution('methane_pox_on_pt.cti', gas)
surf = ct.Interface('methane_pox_on_pt.cti', 'Pt_surf')
reactor = ct.IdealGasReactor(gas)
surf = ct.Surface(d, [reactor])
# skipping inlet/outlet plumbing for brevity

sim = ct.ReactorNet([reactor, surf])
sim.advance_to_steady_state()

There are obviously other scenarios, e.g. edges / triple phase boundaries.

The steps to allow for this would require some changes of ReactorBase-derived classes, but would eliminate redundancies in the long run.

An advantage of this approach would be that only one time integration approach needs to be maintained. Further, any future serialization would use the same framework.

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-requestNew feature requestquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions