Skip to content

Commit

Permalink
TDACChemistryModel: New chemistry model providing Tabulation of Dynam…
Browse files Browse the repository at this point in the history
…ic Adaptive Chemistry

Provides efficient integration of complex laminar reaction chemistry,
combining the advantages of automatic dynamic specie and reaction
reduction with ISAT (in situ adaptive tabulation).  The advantages grow
as the complexity of the chemistry increases.

References:
    Contino, F., Jeanmart, H., Lucchini, T., & D’Errico, G. (2011).
    Coupling of in situ adaptive tabulation and dynamic adaptive chemistry:
    An effective method for solving combustion in engine simulations.
    Proceedings of the Combustion Institute, 33(2), 3057-3064.

    Contino, F., Lucchini, T., D'Errico, G., Duynslaegher, C.,
    Dias, V., & Jeanmart, H. (2012).
    Simulations of advanced combustion modes using detailed chemistry
    combined with tabulation and mechanism reduction techniques.
    SAE International Journal of Engines,
    5(2012-01-0145), 185-196.

    Contino, F., Foucher, F., Dagaut, P., Lucchini, T., D’Errico, G., &
    Mounaïm-Rousselle, C. (2013).
    Experimental and numerical analysis of nitric oxide effect on the
    ignition of iso-octane in a single cylinder HCCI engine.
    Combustion and Flame, 160(8), 1476-1483.

    Contino, F., Masurier, J. B., Foucher, F., Lucchini, T., D’Errico, G., &
    Dagaut, P. (2014).
    CFD simulations using the TDAC method to model iso-octane combustion
    for a large range of ozone seeding and temperature conditions
    in a single cylinder HCCI engine.
    Fuel, 137, 179-184.

Two tutorial cases are currently provided:
    + tutorials/combustion/chemFoam/ic8h18_TDAC
    + tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC

the first of which clearly demonstrates the advantage of dynamic
adaptive chemistry providing ~10x speedup,

the second demonstrates ISAT on the modest complex GRI mechanisms for
methane combustion, providing a speedup of ~4x.

More tutorials demonstrating TDAC on more complex mechanisms and cases
will be provided soon in addition to documentation for the operation and
settings of TDAC.  Also further updates to the TDAC code to improve
consistency and integration with the rest of OpenFOAM and further
optimize operation can be expected.

Original code providing all algorithms for chemistry reduction and
tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca
D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert.

Implementation updated, optimized and integrated into OpenFOAM-dev by
Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.
  • Loading branch information
Henry Weller committed Jul 17, 2016
1 parent 8b8270f commit f2c263b
Show file tree
Hide file tree
Showing 125 changed files with 45,393 additions and 185 deletions.
2 changes: 1 addition & 1 deletion applications/solvers/combustion/fireFoam/YEEqn.H
Expand Up @@ -16,7 +16,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/combustion/reactingFoam/YEqn.H
Expand Up @@ -16,7 +16,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
Expand Up @@ -17,7 +17,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
Expand Up @@ -17,7 +17,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
Expand Up @@ -16,7 +16,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
Expand Up @@ -16,7 +16,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection

forAll(Y, i)
{
if (i != inertIndex)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];

Expand Down
Expand Up @@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
Expand Down Expand Up @@ -142,6 +142,12 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn
this->name()
)
)
|| (
!this->thermo_->composition().active
(
this->thermo_->composition().species()[Yi.member()]
)
)
)
{
return tmp<fvScalarMatrix>();
Expand Down
1 change: 1 addition & 0 deletions bin/tools/CleanFunctions
Expand Up @@ -57,6 +57,7 @@ cleanCase()

rm -rf processor* > /dev/null 2>&1
rm -rf postProcessing > /dev/null 2>&1
rm -rf TDAC > /dev/null 2>&1
rm -rf probes* > /dev/null 2>&1
rm -rf forces* > /dev/null 2>&1
rm -rf graphs* > /dev/null 2>&1
Expand Down
3 changes: 3 additions & 0 deletions src/thermophysicalModels/chemistryModel/Make/files
Expand Up @@ -6,6 +6,9 @@ chemistryModel/psiChemistryModel/psiChemistryModels.C
chemistryModel/rhoChemistryModel/rhoChemistryModel.C
chemistryModel/rhoChemistryModel/rhoChemistryModels.C

chemistryModel/TDACChemistryModel/reduction/makeChemistryReductionMethods.C
chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.C

chemistrySolver/chemistrySolver/makeChemistrySolvers.C

LIB = $(FOAM_LIBBIN)/libchemistryModel

0 comments on commit f2c263b

Please sign in to comment.