From 747628b5a78da09ed98f977376dbec3d9e887e53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Jasi=C5=84ski?= <daniel.jasinski@gmail.com>
Date: Sat, 7 Nov 2015 13:53:23 +0100
Subject: [PATCH] Chemkin Reader - reading transport properties

---
 .../chemistryReaders/chemkinReader/chemkinLexer.L  |  3 +-
 .../chemistryReaders/chemkinReader/chemkinReader.C | 38 +++++++++++++++++++---
 .../chemistryReaders/chemkinReader/chemkinReader.H |  8 ++++-
 3 files changed, 42 insertions(+), 7 deletions(-)

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..441bcd1 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
@@ -771,12 +771,31 @@ void Foam::chemkinReader::addReaction
 }
 
 
+void Foam::chemkinReader::createDefaultTransport()
+{
+    dictionary transport;
+    transport.add("As", 1.67212e-6);
+    transport.add("Ts", 170.672);
+
+    dictionary defaultDict;
+    defaultDict.add("transport",transport);
+
+    transportDict_.add(keyType(".*",true),defaultDict);
+}
+
+
 void Foam::chemkinReader::read
 (
     const fileName& CHEMKINFileName,
-    const fileName& thermoFileName
+    const fileName& thermoFileName,
+    const fileName& transportFileName
 )
 {
+    if (transportFileName != fileName::null)
+    {
+        transportDict_.read(IFstream(transportFileName)());
+    }
+
     if (thermoFileName != fileName::null)
     {
         std::ifstream thermoStream(thermoFileName.c_str());
@@ -843,7 +862,8 @@ Foam::chemkinReader::chemkinReader
     newFormat_(newFormat),
     imbalanceTol_(ROOTSMALL)
 {
-    read(CHEMKINFileName, thermoFileName);
+    createDefaultTransport();
+    read(CHEMKINFileName, thermoFileName, fileName::null);
 }
 
 
@@ -874,6 +894,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 +908,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..780f020 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,9 +305,12 @@ private:
         void read
         (
             const fileName& CHEMKINFileName,
-            const fileName& thermoFileName
+            const fileName& thermoFileName,
+            const fileName& transportFileName
         );
 
+        // Fill transport dictionary with default values
+        void createDefaultTransport();
 
         //- Disallow default bitwise copy construct
         chemkinReader(const chemkinReader&);
-- 
1.9.1

