diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C
index 187e30093243689fc7e297716051abc6aeb908ad..c4d502ebe0713823f48f663b16ebf65ea563980d 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C
@@ -75,13 +75,15 @@ Foam::TDACChemistryModel<ReactionThermo, ThermoType>::TDACChemistryModel
     // Store the species composition according to the species index
     speciesTable speciesTab = composition.species();
 
-    const HashTable<List<specieElement>>& specComp =
+    autoPtr<HashTable<List<specieElement>>> specCompPtr
+    (
         dynamicCast<const reactingMixture<ThermoType>&>(this->thermo())
-       .specieComposition();
+       .specieComposition()
+    );
 
     forAll(specieComp_, i)
     {
-        specieComp_[i] = specComp[this->Y()[i].member()];
+        specieComp_[i] = (specCompPtr.ref())[this->Y()[i].member()];
     }
 
     mechRed_ = chemistryReductionMethod<ReactionThermo, ThermoType>::New
diff --git a/src/thermophysicalModels/reactionThermo/Make/files b/src/thermophysicalModels/reactionThermo/Make/files
index 8870103dfe05d72dc41520b0d43172d771f9103e..e31e2076ffe1c67de3cebc5276d7b84bbdcfb0c5 100644
--- a/src/thermophysicalModels/reactionThermo/Make/files
+++ b/src/thermophysicalModels/reactionThermo/Make/files
@@ -21,4 +21,5 @@ derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField
 
 functionObjects/moleFractions/moleFractionsFunctionObjects.C
 
+
 LIB = $(FOAM_LIBBIN)/libreactionThermophysicalModels
diff --git a/src/thermophysicalModels/reactionThermo/Make/options b/src/thermophysicalModels/reactionThermo/Make/options
index 26ee649fb42ad834cfcc7da4e92e521fc56d57e7..20754771fa29104edd861292d33525bcb38aa69f 100644
--- a/src/thermophysicalModels/reactionThermo/Make/options
+++ b/src/thermophysicalModels/reactionThermo/Make/options
@@ -4,6 +4,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solidSpecie/lnInclude \
+    -I$(LIB_SRC)/functionObjects/field/lnInclude
 
 LIB_LIBS = \
     -lfiniteVolume \
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H
index d7db29cc424e7a034936c660ca9f1672757cb618..522c4be19e91a40a08bb99907ea89b0cc828552d 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/basicSpecieMixture/basicSpecieMixture.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2014-2017 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -42,12 +43,15 @@ SourceFiles
 #define basicSpecieMixture_H
 
 #include "basicMultiComponentMixture.H"
+#include "specieElement.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+typedef HashTable<List<specieElement>> speciesCompositionTable;
+
 /*---------------------------------------------------------------------------*\
                  Class basicSpecieMixture Declaration
 \*---------------------------------------------------------------------------*/
@@ -202,6 +206,16 @@ public:
                 const scalar p,
                 const scalar T
             ) const = 0;
+
+            //- Species composition
+            virtual autoPtr<speciesCompositionTable> specieComposition() const
+            {
+                return
+                    autoPtr<speciesCompositionTable>
+                    (
+                        new speciesCompositionTable()
+                    );
+            }
 };
 
 
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
index 08763c8a2a513b7b4125f5ef745fe89239c5b52e..bb33b6cfbf41d7faa07c0a056d13693fbe97b72f 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -115,9 +116,13 @@ public:
         using PtrList<Reaction<ThermoType>>::operator[];
 
         //- Table of species composition
-        const speciesCompositionTable& specieComposition() const
+        virtual autoPtr<speciesCompositionTable> specieComposition() const
         {
-            return speciesComposition_;
+            return
+                autoPtr<speciesCompositionTable>
+                (
+                    new speciesCompositionTable(speciesComposition_)
+                );
         }
 };
 
diff --git a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermo.H b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermo.H
index fe1035f45a9224ee42dc1e32d8927af427ef306c..080e26315e1755989fce903ad370cc357c8538db 100644
--- a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermo.H
+++ b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermo.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2015 OpenFOAM Foundation
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -45,12 +45,15 @@ SourceFiles
 #include "basicSpecieMixture.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
+#include "specieElement.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+typedef HashTable<List<specieElement>> speciesCompositionTable;
+
 /*---------------------------------------------------------------------------*\
                      Class psiReactionThermo Declaration
 \*---------------------------------------------------------------------------*/
@@ -137,6 +140,16 @@ public:
 
         //- Return the composition of the multi-component mixture
         virtual const basicSpecieMixture& composition() const = 0;
+
+        //- Table of species composition
+        autoPtr<speciesCompositionTable> specieComposition() const
+        {
+            return
+                autoPtr<speciesCompositionTable>
+                (
+                    composition().specieComposition()
+                );
+        }
 };
 
 
diff --git a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermo.H b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermo.H
index e28274331a843ef8121751e7a2aa9454ad7379b3..72ce0177b6a998c975e8f80651c8b42d8194713a 100644
--- a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermo.H
+++ b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermo.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2015 OpenFOAM Foundation
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -45,12 +45,15 @@ SourceFiles
 #include "basicSpecieMixture.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
+#include "specieElement.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+typedef HashTable<List<specieElement>> speciesCompositionTable;
+
 /*---------------------------------------------------------------------------*\
                      Class rhoReactionThermo Declaration
 \*---------------------------------------------------------------------------*/
@@ -137,6 +140,16 @@ public:
 
         //- Return the composition of the multi-component mixture
         virtual const basicSpecieMixture& composition() const = 0;
+
+        //- Table of species composition
+        autoPtr<speciesCompositionTable> specieComposition() const
+        {
+            return
+                autoPtr<speciesCompositionTable>
+                (
+                    composition().specieComposition()
+                );
+        }
 };