Permalink
Browse files

TDACChemistryModel: New chemistry model providing Tabulation of Dynam…

…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.
1 parent 8b8270f commit f2c263b9fd7c65e738b626280b8f2f3e7c1dadf8 Henry Weller committed Jul 17, 2016
Showing with 45,393 additions and 185 deletions.
  1. +1 −1 applications/solvers/combustion/fireFoam/YEEqn.H
  2. +1 −1 applications/solvers/combustion/reactingFoam/YEqn.H
  3. +1 −1 applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
  4. +1 −1 applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H
  5. +1 −1 applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
  6. +1 −1 applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H
  7. +7 −1 ...ase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
  8. +1 −0 bin/tools/CleanFunctions
  9. +3 −0 src/thermophysicalModels/chemistryModel/Make/files
  10. +843 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C
  11. +280 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H
  12. +152 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModelI.H
  13. +746 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DAC/DAC.C
  14. +172 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DAC/DAC.H
  15. +347 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRG/DRG.C
  16. +108 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRG/DRG.H
  17. +746 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRGEP/DRGEP.C
  18. +179 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRGEP/DRGEP.H
  19. +153 −0 ...ysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRGEP/SortableListDRGEP.C
  20. +142 −0 ...ysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/DRGEP/SortableListDRGEP.H
  21. +568 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/EFA/EFA.C
  22. +105 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/EFA/EFA.H
  23. +155 −0 ...mophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/EFA/SortableListEFA.C
  24. +141 −0 ...mophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/EFA/SortableListEFA.H
  25. +442 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/PFA/PFA.C
  26. +107 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/reduction/PFA/PFA.H
  27. +58 −0 ...l/chemistryModel/TDACChemistryModel/reduction/chemistryReductionMethod/chemistryReductionMethod.C
  28. +177 −0 ...l/chemistryModel/TDACChemistryModel/reduction/chemistryReductionMethod/chemistryReductionMethod.H
  29. +84 −0 .../chemistryModel/TDACChemistryModel/reduction/chemistryReductionMethod/chemistryReductionMethodI.H
  30. +99 −0 ...hemistryModel/TDACChemistryModel/reduction/chemistryReductionMethod/chemistryReductionMethodNew.C
  31. +98 −0 ...Models/chemistryModel/chemistryModel/TDACChemistryModel/reduction/makeChemistryReductionMethods.C
  32. +122 −0 ...Models/chemistryModel/chemistryModel/TDACChemistryModel/reduction/makeChemistryReductionMethods.H
  33. +65 −0 ...stryModel/chemistryModel/TDACChemistryModel/reduction/noChemistryReduction/noChemistryReduction.C
  34. +101 −0 ...stryModel/chemistryModel/TDACChemistryModel/reduction/noChemistryReduction/noChemistryReduction.H
  35. +622 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.C
  36. +256 −0 src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/ISAT.H
  37. +180 −0 ...alModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.C
  38. +207 −0 ...alModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryNode/binaryNode.H
  39. +821 −0 ...alModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.C
  40. +250 −0 ...alModels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/binaryTree/binaryTree.H
  41. +985 −0 ...ls/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.C
  42. +460 −0 ...ls/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/ISAT/chemPointISAT/chemPointISAT.H
  43. +55 −0 ...hemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.C
  44. +184 −0 ...hemistryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethod.H
  45. +99 −0 ...istryModel/TDACChemistryModel/tabulation/chemistryTabulationMethod/chemistryTabulationMethodNew.C
  46. +101 −0 ...dels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.C
  47. +89 −0 ...dels/chemistryModel/chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.H
  48. +54 −0 ...yModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.C
  49. +141 −0 ...yModel/chemistryModel/TDACChemistryModel/tabulation/noChemistryTabulation/noChemistryTabulation.H
  50. +19 −5 ...mophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelTemplates.C
  51. +64 −83 src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C
  52. +16 −9 src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H
  53. +75 −1 src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
  54. +74 −1 src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
  55. +20 −3 src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolverTypes.H
  56. +33 −53 ...rmophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.C
  57. +19 −4 ...rmophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H
  58. +34 −10 ...mophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixtureI.H
  59. +4 −0 src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.C
  60. +14 −2 src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
  61. +11 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/Allclean
  62. +14 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/Allrun
  63. +7,902 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/chemkin/chem.inp
  64. +13 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/chemkin/senk.inp
  65. +3,775 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/chemkin/senk.out
  66. +5,959 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/chemkin/therm.dat
  67. +27 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/chemkin/transportProperties
  68. +75 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/constant/chemistryProperties
  69. +34 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/constant/initialConditions
  70. +33 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/constant/thermophysicalProperties
  71. +55 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/system/controlDict
  72. +32 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/system/fvSchemes
  73. +30 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/system/fvSolution
  74. +14 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/validation/Allrun
  75. +25 −0 tutorials/combustion/chemFoam/ic8h18_TDAC/validation/createGraph
  76. +3 −3 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D/0/T
  77. +1 −1 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/0/N2
  78. +3 −3 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS/0/T
  79. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/CH4
  80. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/CO2
  81. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/H2O
  82. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/N2
  83. +47 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/O2
  84. +47 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/T
  85. +46 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/U
  86. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/Ydefault
  87. +45 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/alphat
  88. +44 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/0/p
  89. +35 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/chemistryProperties
  90. +27 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/combustionProperties
  91. +28 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/reactions
  92. +5,590 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/reactionsGRI
  93. +152 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGas
  94. +1,391 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermo.compressibleGasGRI
  95. +36 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/thermophysicalProperties
  96. +21 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/constant/turbulenceProperties
  97. +82 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/blockMeshDict
  98. +53 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/controlDict
  99. +29 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/decomposeParDict
  100. +57 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/fvSchemes
  101. +69 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/fvSolution
  102. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/CH4
  103. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/CO2
  104. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/H2O
  105. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/N2
  106. +47 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/O2
  107. +47 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/T
  108. +46 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/U
  109. +48 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/Ydefault
  110. +45 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/alphat
  111. +44 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/0/p
  112. +134 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties
  113. +127 −0 ...ials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/chemistryProperties.new
  114. +27 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/combustionProperties
  115. +28 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/reactions
  116. +5,590 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/reactionsGRI
  117. +152 −0 ...rials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGas
  118. +1,391 −0 ...ls/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermo.compressibleGasGRI
  119. +36 −0 ...als/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/thermophysicalProperties
  120. +21 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/constant/turbulenceProperties
  121. +82 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/blockMeshDict
  122. +53 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/controlDict
  123. +29 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/decomposeParDict
  124. +57 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/fvSchemes
  125. +69 −0 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/fvSolution
@@ -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];
@@ -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];
@@ -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];
@@ -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];
@@ -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];
@@ -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];
@@ -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
@@ -142,6 +142,12 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn
this->name()
)
)
+ || (
+ !this->thermo_->composition().active
+ (
+ this->thermo_->composition().species()[Yi.member()]
+ )
+ )
)
{
return tmp<fvScalarMatrix>();
@@ -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
@@ -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
Oops, something went wrong.

0 comments on commit f2c263b

Please sign in to comment.