From e6773d7da67bf708fde01dc4e32ded33e9aaebc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Jasi=C5=84ski?= <daniel.jasinski@gmail.com>
Date: Tue, 17 Nov 2015 12:09:09 +0100
Subject: [PATCH] Chemkin Reader and chemkinToFoam - read transport properties

---
 .../thermophysical/chemkinToFoam/chemkinToFoam.C   |  7 ++++---
 .../chemistryReaders/chemkinReader/chemkinLexer.L  |  3 +--
 .../chemistryReaders/chemkinReader/chemkinReader.C | 24 +++++++++++++++++-----
 .../chemistryReaders/chemkinReader/chemkinReader.H | 10 ++++++---
 4 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C
index 8399c10..88a68c1 100644
--- a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C
+++ b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C
@@ -41,6 +41,7 @@ using namespace Foam;
 int main(int argc, char *argv[])
 {
     argList::validArgs.append("CHEMKINFile");
+    argList::validArgs.append("CHEMKINTransport");
     argList::validArgs.append("CHEMKINThermodynamicsFile");
     argList::validArgs.append("FOAMChemistryFile");
     argList::validArgs.append("FOAMThermodynamicsFile");
@@ -57,16 +58,16 @@ int main(int argc, char *argv[])
 
     speciesTable species;
 
-    chemkinReader cr(args[1], species, args[2], newFormat);
+    chemkinReader cr(species, args[1], args[2], args[3], newFormat);
 
-    OFstream reactionsFile(args[3]);
+    OFstream reactionsFile(args[4]);
     reactionsFile
         << "species" << cr.species() << token::END_STATEMENT << nl << nl;
 
     cr.reactions().write(reactionsFile);
 
 
-    OFstream thermoFile(args[4]);
+    OFstream thermoFile(args[5]);
     cr.speciesThermo().write(thermoFile);
 
     Info<< "End\n" << endl;
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
index 98a7bbd..841808a 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
@@ -645,8 +645,7 @@ bool finishReaction = false;
                     highCpCoeffs,
                     lowCpCoeffs
                 ),
-                1.67212e-6,
-                170.672
+                transportDict_.subDict(currentSpecieName)
             )
         );
 
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
index 2334241..fb4a218 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
@@ -774,9 +774,12 @@ void Foam::chemkinReader::addReaction
 void Foam::chemkinReader::read
 (
     const fileName& CHEMKINFileName,
-    const fileName& thermoFileName
+    const fileName& thermoFileName,
+    const fileName& transportFileName
 )
 {
+    transportDict_.read(IFstream(transportFileName)());
+
     if (thermoFileName != fileName::null)
     {
         std::ifstream thermoStream(thermoFileName.c_str());
@@ -830,8 +833,9 @@ void Foam::chemkinReader::read
 
 Foam::chemkinReader::chemkinReader
 (
-    const fileName& CHEMKINFileName,
     speciesTable& species,
+    const fileName& CHEMKINFileName,
+    const fileName& transportFileName,
     const fileName& thermoFileName,
     const bool newFormat
 )
@@ -843,7 +847,7 @@ Foam::chemkinReader::chemkinReader
     newFormat_(newFormat),
     imbalanceTol_(ROOTSMALL)
 {
-    read(CHEMKINFileName, thermoFileName);
+    read(CHEMKINFileName, thermoFileName, transportFileName);
 }
 
 
@@ -874,6 +878,11 @@ Foam::chemkinReader::chemkinReader
         thermoFile = fileName(thermoDict.lookup("CHEMKINThermoFile")).expand();
     }
 
+    fileName transportFile
+    (
+        fileName(thermoDict.lookup("CHEMKINTransportFile")).expand()
+    );
+
     // allow relative file names
     fileName relPath = thermoDict.name().path();
     if (relPath.size())
@@ -883,13 +892,18 @@ Foam::chemkinReader::chemkinReader
             chemkinFile = relPath/chemkinFile;
         }
 
-        if (!thermoFile.isAbsolute())
+        if (thermoFile != fileName::null && !thermoFile.isAbsolute())
         {
             thermoFile = relPath/thermoFile;
         }
+
+        if (!transportFile.isAbsolute())
+        {
+            transportFile = relPath/transportFile;
+        }
     }
 
-    read(chemkinFile, thermoFile);
+    read(chemkinFile, thermoFile, transportFile);
 }
 
 
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
index ee1986f..74ee551 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
@@ -208,6 +208,9 @@ private:
         //- List of the reactions
         ReactionList<gasHThermoPhysics> reactions_;
 
+        //- Transport properties dictionary
+        dictionary transportDict_;
+
         //- Flag to indicate that file is in new format
         Switch newFormat_;
 
@@ -302,10 +305,10 @@ private:
         void read
         (
             const fileName& CHEMKINFileName,
-            const fileName& thermoFileName
+            const fileName& thermoFileName,
+            const fileName& transportFileName
         );
 
-
         //- Disallow default bitwise copy construct
         chemkinReader(const chemkinReader&);
 
@@ -324,8 +327,9 @@ public:
         //- Construct from CHEMKIN III file name
         chemkinReader
         (
-            const fileName& chemkinFile,
             speciesTable& species,
+            const fileName& CHEMKINFileName,
+            const fileName& transportFileName,
             const fileName& thermoFileName = fileName::null,
             const bool newFormat = false
         );
-- 
1.9.1

