Cantera / enhancements

Repository for proposed and ongoing enhancements to Cantera
11 stars 5 forks source link

Create 'ReactorEdge' class in the reactor code to model edge interactions #203

Open gkogekar opened 1 month ago

gkogekar commented 1 month ago

Abstract

The existing reactor code only considers gas, surface and the bulk phases. The existing edgephase between two surfaces (defined in Cantera thermo) and the corresponding kinetics needs to be included in the reactor model.

Motivation

The evalsurfaces() function in the reactor code solves for the surface concentrations based on the species' net production rates at each surface. If the edge is present in the model, additional rate terms are needed to account for the edge reactions.

Possible Solutions

Similar to the ReactorSurf class, a new ReactorEdge class can be implemented. This class will contain all necessary information such as two adjacent surfaces and length of the edge. The residual equations from evalSurfaces() must be updated to include edge reactions (or another function such as evalEdges() can also be implemented).

References

This was motivated by discussion on the Slack channel regarding surface diffusion modeling.

speth commented 1 month ago

Thanks for writing this up, @gkogekar. I realize that this idea is quite timely, in light of #202. The second potential solution I described there, of separating ReactorSurface evaluation from the evaluation of a specific Reactor is probably the cleanest way to implement a ReactorEdge, given the number of phases that can be affected by an edge reaction -- up to 3 different surfaces and 3 different bulk phases, in addition to the edge itself.