Conversation
Codecov Report
@@ Coverage Diff @@
## main #1443 +/- ##
==========================================
- Coverage 70.91% 69.92% -0.99%
==========================================
Files 369 377 +8
Lines 55232 57262 +2030
Branches 18196 19151 +955
==========================================
+ Hits 39168 40043 +875
- Misses 13602 14669 +1067
- Partials 2462 2550 +88 see 257 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
speth
left a comment
There was a problem hiding this comment.
Thanks for providing this example, @g3bk47. I definitely agree that capabilities of the ExtensibleReactor classes are not fully explored in the existing examples. Your use case here isn't something I anticipated, but I'm glad to see that you were able to use it effectively.
While this is somewhat longer than other examples, I think that's completely fine, and this is a really nice example of building a "device scale" model on top of Cantera without being too complex.
AUTHORS
Outdated
| Su Sun (@ssun30), Northeastern University | ||
| Sergey Torokhov (@band-a-prend) | ||
| Laurien Vandewalle (@lavdwall) | ||
| Guillaume Vignat, Stanford University |
There was a problem hiding this comment.
If Guillaume has a GitHub account, can you (a) add their account name here like it is for others?
Also, please amend the commit message for the commit that adds the example to contain a line formatted like:
Co-authored-by: Guillaume Vignat <[email protected]>
Co-authored-by: Guillaume Vignat <[email protected]>
6921266 to
9f73650
Compare
|
Hi Ray, thanks for the review! I think I incorporated all of your comments with the latest commit. |
ischoegl
left a comment
There was a problem hiding this comment.
Hi @g3bk47 ... thanks for contributing a nice example based on ExtensibleReactor.
I believe that details of the implementation are in good hands (@speth already commented).
From my perspective, I wanted to make sure that the example description includes a disclaimer clearly stating limitations of the model. Porous burners are intrinsically 1D; while it is certainly legitimate to simplify for some applications (e.g. coarse approximations of temperatures or predictions of emissions), a reactor cascade has inherent limitations that will not capture the full range of behaviors. At the same time the example will capture excess enthalpy creating superadiabatic conditions that promote combustion beyond conventional flammability limits and/or at rates that are significantly higher than adiabatic flame speeds.
The most interesting aspect of two-section burners is that they possess the ability to stabilize flames for a broad range of inlet mass fluxes due to internal heat recirculation across the interface: stabilization is accomplished by mismatched matrix properties, where the downstream section by itself promotes flash-back while the upstream section by itself promotes blow-off. The stabilization mechanism is based on solid conduction / radiation, where implementation details are extremely relevant if one wants to predict flashback or blow-off behavior. It is unrealistic to capture these physics with a coarsely refined 0D approach (or disabling reactions).
In a nutshell, the model is certainly ok for illustration purposes, but will not necessarily have predictive qualities when it comes to conditions that can be realized in experiments. Thus, it is prudent to clearly point out these limitations to avoid misleading conclusions by users
|
Hi @ischoegl, |
Co-authored-by: Ray Speth <[email protected]>
Co-authored-by: Ray Speth <[email protected]>
5cd73e6 to
0db9139
Compare
Hi, |
Hi all,
I really like the extensible reactor classes. However, I feel that they are more powerful than what the currently available examples show. Therefore, I would like to contribute another example which uses the extensible reactors to simulate reacting flows in porous media burners. The porous media burner in question has been experimentally investigated and the burner setup as well as the governing equations are described in a recent publication (https://doi.org/10.1016/j.combustflame.2023.112642).
Since the code in this example uses the real properties and submodels for the different burner sections, it is quite a bit longer than other examples available in Cantera. I already simplified the code a bit compared to the actual code available in the supplementary materials of the paper, but it is still quite involved. The example showcases:
Let me know what you think of this example and if I should simplify/shorten it further.
Checklist
scons build&scons test) and unit tests address code coverage